AsyncGenerator.prototype.next()

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.

Die next() Methode von AsyncGenerator Instanzen gibt den nächsten Wert in der Sequenz zurück.

Syntax

js
next()
next(value)

Parameter

value Optional

Ein optionaler Wert, der verwendet wird, um den internen Zustand des Generators zu ändern. Ein Wert, der an die next() Methode übergeben wird, wird von yield empfangen

Rückgabewert

Ein Promise, der, wenn aufgelöst, ein Object mit zwei Eigenschaften zurückgibt:

done

Ein boolescher Wert:

  • true, wenn der Generator das Ende seines Kontrollflusses erreicht hat. In diesem Fall gibt value den Rückgabewert des Generators an (der undefiniert sein kann).
  • false, wenn der Generator in der Lage ist, weitere Werte zu erzeugen.
value

Jeder beliebige JavaScript-Wert, der vom Generator erzeugt oder zurückgegeben wurde.

Beispiele

Verwendung von next()

Das folgende Beispiel zeigt einen Generator und das Objekt, das die next Methode zurückgibt:

js
// An async task. Pretend it's doing something more useful
// in practice.
function delayedValue(time, value) {
  return new Promise((resolve, reject) => {
    setTimeout(() => resolve(value), time);
  });
}

async function* createAsyncGenerator() {
  yield delayedValue(500, 1);
  yield delayedValue(500, 2);
  yield delayedValue(500, 3);
}

const asyncGen = createAsyncGenerator();
asyncGen.next().then((res) => console.log(res)); // { value: 1, done: false }
asyncGen.next().then((res) => console.log(res)); // { value: 2, done: false }
asyncGen.next().then((res) => console.log(res)); // { value: 3, done: false }
asyncGen.next().then((res) => console.log(res)); // { value: undefined, done: true }

Senden von Werten an den Generator

In diesem Beispiel wird next mit einem Wert aufgerufen.

Hinweis: Der erste Aufruf protokolliert nichts, weil der Generator anfänglich nichts erzeugte.

js
// An async task. Pretend it's doing something more useful
// in practice.
function sleep(time) {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, time);
  });
}

async function* createAsyncGenerator() {
  while (true) {
    await sleep(500);
    const value = yield;
    console.log(value);
  }
}

async function main() {
  const asyncGen = createAsyncGenerator();
  // No log at this step: the first value sent through `next` is lost
  console.log(await asyncGen.next(1)); // { value: undefined, done: false }
  // Logs 2: the value sent through `next`
  console.log(await asyncGen.next(2)); // { value: undefined, done: false }
}

main();

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-asyncgenerator-prototype-next

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
next

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch