Symbol.asyncIterator
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
O Symbol.asyncIterator
é um símbolo conhecido que especifica o padrão AsyncIterator para um objeto. Se essa propriedade é configurada em um objeto, é um iterável assíncrono e pode ser usado in um for await...of
loop.
Descrição
O Symbol.asyncIterator
é um símbolo built-in que é usado para um acessar o método @@asyncIterator
de um objeto. Para que um objeto seja iterável assíncrono, ele deve ter uma chave Symbol.asyncIterator
.
Property attributes of Symbol.asyncIterator | |
---|---|
Writable | no |
Enumerable | no |
Configurable | no |
Exemplos
Iteráveis assíncronos definidos pelo usuário
Você consegue definir seu próprio iterável assíncrono configurando a propriedade [Symbol.asyncIterator]
em um objeto.
const myAsyncIterable = {
async *[Symbol.asyncIterator]() {
yield "hello";
yield "async";
yield "iteration!";
},
};
(async () => {
for await (const x of myAsyncIterable) {
console.log(x);
// resultado esperado:
// "hello"
// "async"
// "iteration!"
}
})();
Quando criando uma API, lembre que iteráveis assíncronos são programados para representar algum iterável — como um fluxo de dados ou uma lista —, não para substituir completamente chamadas e eventos na maioria das situações.
Iteráveis assíncronos
Não há atualmente objetos Javascript built-in que tenha a chave [Symbol.asyncIterator]
configurada por padrão. Entretanto, a WHATWG Streams estão configurando para que o primeiro objeto built-in seja um iterável assíncrono, com a recente chegada do [Symbol.asyncIterator]
nas especificações.
Especificações
Specification |
---|
ECMAScript Language Specification # sec-symbol.asynciterator |
Compatibilidade com navegadores
BCD tables only load in the browser