Baseline Widely available
Die next()
-Methode von AsyncGenerator
-Instanzen gibt den nächsten Wert in der Sequenz zurück.
value
Optional
Ein optionaler Wert, der verwendet wird, um den internen Zustand des Generators zu ändern. Ein an die next()
-Methode übergebener Wert wird von yield
empfangen.
Ein Promise
, das beim Auflösen 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 möglicherweise undefiniert ist).false
, wenn der Generator in der Lage ist, weitere Werte zu erzeugen.value
Jeder JavaScript-Wert, der vom Generator "yielded" oder zurückgegeben wurde.
Das folgende Beispiel zeigt einen Generator und das Objekt, das die next
-Methode zurückgibt:
// 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 }
Werte an den Generator senden
In diesem Beispiel wird next
mit einem Wert aufgerufen.
Hinweis: Der erste Aufruf protokolliert nichts, da der Generator zunächst nichts "yielded".
// 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 Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4