Symbol.asyncIterator

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

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

Especificação
ECMAScript (ECMA-262)
The definition of 'Symbol.asyncIterator' in that specification.

Compatibilidade com navegadores

BCD tables only load in the browser

Vejá também