--- title: Symbol.asyncIterator slug: Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator translation_of: Web/JavaScript/Reference/Global_Objects/Symbol/asyncIterator ---
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.
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.
{{js_property_attributes(0,0,0)}}
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.
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ção |
|---|
| {{SpecName('ESDraft', '#sec-symbol.asynciterator', 'Symbol.asyncIterator')}} |
{{compat("javascript.builtins.Symbol.asyncIterator")}}