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
Writableno
Enumerableno
Configurableno

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.

js
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

Vejá também