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.

El símbolo conocido Symbol.asyncIterator especifica el AsyncIterator por defecto para un objeto. Si se establece esta propiedad en un objeto, es un iterable asíncrono y puede utilizarse en un bucle for await...of.

Descripción

El símbolo Symbol.asyncIterator es un símbolo incorporado que se utiliza para acceder al método @@asyncIterator de un objeto. Para que un objeto sea iterable asíncrono, debe tener una clave Symbol.asyncIterator.

Atributos de la propiedad Symbol.asyncIterator
Sobrescribir No
Numerable No
Configurable No

Ejemplos

Iterables asíncronos definidos por el usuario

Puedes definir tu propio iterable asíncrono estableciendo la propiedad [Symbol.asyncIterator] en un 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!"
  }
})();

Cuando crees una API, recuerda que los iterables asíncronos están diseñados para representar algo iterable — como un flujo de datos o una lista —, no para reemplazar completamente las devoluciones de llamada y los eventos en la mayoría de las situaciones.

Iterables asíncronos incorporados

Actualmente no hay objetos JavaScript incorporados que tengan la clave [Symbol.asyncIterator] establecida por defecto. Sin embargo, los flujos de WHATWG están preparados para ser el primer objeto incorporado que sea iterable asíncrono, con [Symbol.asyncIterator] recientemente aterrizando en la especificación.

Especificaciones

Specification
ECMAScript Language Specification
# sec-symbol.asynciterator

Compatibilidad con navegadores

BCD tables only load in the browser

Véase también