Generator.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 September 2016.
Die next()
Methode von Generator
Instanzen gibt ein Objekt mit zwei Eigenschaften done
und value
zurück. Es kann auch ein Parameter an die next
Methode übergeben werden, um einen Wert an den Generator zu senden.
Syntax
next()
next(value)
Parameter
value
Optional-
Der Wert, der an den Generator gesendet werden soll.
Der Wert wird als Ergebnis eines
yield
Ausdrucks zugewiesen. Zum Beispiel wird im Fall vonvariable = yield expression
der Wert, der der.next()
Funktion übergeben wird, anvariable
zugewiesen.
Rückgabewert
Ein Object
mit zwei Eigenschaften:
done
-
Ein boolescher Wert:
true
, wenn der Generator das Ende seines Kontrollflusses überschritten hat. In diesem Fall gibtvalue
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 von JavaScript erzeugte oder zurückgegebene Wert des Generators.
Beispiele
Verwendung von next()
Das folgende Beispiel zeigt einen Generator und das Objekt, das die next
Methode zurückgibt:
function* gen() {
yield 1;
yield 2;
yield 3;
}
const g = gen(); // Generator { }
g.next(); // { value: 1, done: false }
g.next(); // { value: 2, done: false }
g.next(); // { value: 3, done: false }
g.next(); // { value: undefined, done: true }
Verwendung von next() mit einer Liste
In diesem Beispiel nimmt getPage
eine Liste und "paginisiert" sie in Stücke der Größe pageSize
. Jeder Aufruf von next
liefert ein solches Stück.
function* getPage(list, pageSize = 1) {
for (let index = 0; index < list.length; index += pageSize) {
yield list.slice(index, index + pageSize);
}
}
const list = [1, 2, 3, 4, 5, 6, 7, 8];
const page = getPage(list, 3); // Generator { }
page.next(); // { value: [1, 2, 3], done: false }
page.next(); // { value: [4, 5, 6], done: false }
page.next(); // { value: [7, 8], done: false }
page.next(); // { 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 anfänglich nichts geliefert hat.
function* gen() {
while (true) {
const value = yield;
console.log(value);
}
}
const g = gen();
g.next(1); // Returns { value: undefined, done: false }
// No log at this step: the first value sent through `next` is lost
g.next(2); // Returns { value: undefined, done: false }
// Logs 2
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-generator.prototype.next |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
function*
- Iteratoren und Generatoren Leitfaden