typestar

El protocolo iterable en JavaScript

Todo lo que tenga Symbol.iterator funciona en for-of y con spread.

class Countdown {
  constructor(from) {
    this.from = from;
  }

  *[Symbol.iterator]() {
    for (let n = this.from; n > 0; n -= 1) yield n;
  }
}

const countdown = new Countdown(4);
console.log([...countdown], Math.max(...countdown));

for (const n of countdown) {
  if (n === 2) break;
  console.log("tick", n);
}

const manual = {
  [Symbol.iterator]() {
    let n = 0;
    return { next: () => (n < 2 ? { value: n++, done: false }
                                : { value: undefined, done: true }) };
  },
};
console.log([...manual]);

Cómo funciona

  1. El método devuelve un iterador con un next.
  2. Un generador es la manera fácil de escribir uno.
  3. Symbol.asyncIterator es la misma idea para for await.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
26
Caracteres a escribir
479
Tokens
165
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 94 segundos.

Escribe este fragmento

Paso 2 de 2 en Iterar de forma asíncrona; paso 11 de 19 en Promesas y async.

← Anterior Siguiente →