Symbol.asyncIterator
Baseline
Ampliamente disponible
Esta característica está consolidada y funciona en muchos dispositivos y versiones de navegador. Está disponible en todos los navegadores desde enero de 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.
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
| Especificación |
|---|
| ECMAScript® 2027 Language Specification> # sec-symbol.asynciterator> |