Generator
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since ÑенÑÑбÑÑ 2016 г..
ÐенеÑаÑÐ¾Ñ - ÑÑо обÑекÑ, возвÑаÑаемÑй ÑÑнкÑией-генеÑаÑоÑом и ÑооÑвеÑÑÑвÑÑÑий как "ÐÑеÑиÑÑемомÑ" пÑоÑоколÑ, Ñак и пÑоÑÐ¾ÐºÐ¾Ð»Ñ "ÐÑеÑаÑоÑ".
ÐонÑÑÑÑкÑоÑ
ÐÑÐ¾Ñ Ð¾Ð±ÑÐµÐºÑ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸Ð½ÑÑанÑииÑован напÑÑмÑÑ. ÐмеÑÑо ÑÑого, ÑкземплÑÑ Generator Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ð¾Ð·Ð²ÑаÑÑн из ÑÑнкÑии-генеÑаÑоÑа:
function* generator() {
yield 1;
yield 2;
yield 3;
}
const gen = generator(); // "Generator { }"
console.log(gen.next().value); // 1
console.log(generator().next().value); // 1
console.log(generator().next().value); // 1
ÐеÑÐ¾Ð´Ñ ÑкземплÑÑа
Generator.prototype.next()-
ÐозвÑаÑÐ°ÐµÑ Ð·Ð½Ð°Ñение, полÑÑенное вÑÑажением
yield. Generator.prototype.return()-
ÐозвÑаÑÐ°ÐµÑ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ðµ знаÑение и заканÑÐ¸Ð²Ð°ÐµÑ Ð³ÐµÐ½ÐµÑаÑоÑ.
Generator.prototype.throw()-
ÐÑдаÑÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð³ÐµÐ½ÐµÑаÑоÑа.
ÐÑимеÑ
>ÐеÑконеÑнÑй ÐÑеÑаÑоÑ
function* idMaker() {
var index = 0;
while (true) yield index++;
}
var gen = idMaker(); // "Generator { }"
console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
// ...
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-generator-objects> |