Baseline Widely available
ÐлÑÑевое Ñлово yield
иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð¾ÑÑановки и Ð²Ð¾Ð·Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑнкÑий-генеÑаÑоÑов (function*
или legacy generator function).
function* foo(index) {
while (index < 2) {
yield index;
index++;
}
}
const iterator = foo(0);
console.log(iterator.next().value);
// Expected output: 0
console.log(iterator.next().value);
// Expected output: 1
СинÑакÑиÑ
[rv] = yield [[вÑÑажение]];
вÑÑажение
ÐозвÑаÑаемое вÑÑажение. ÐÑли не Ñказано, Ñо возвÑаÑаеÑÑÑ Ð·Ð½Ð°Ñение undefined
.
rv
ÐозвÑаÑÐ°ÐµÑ Ð½ÐµÐ¾Ð±ÑзаÑелÑное знаÑение, коÑоÑое пеÑедаÑÑÑÑ Ð² next()
генеÑаÑоÑа, ÑÑÐ¾Ð±Ñ Ð²Ð¾Ð·Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ ÐµÐ³Ð¾ вÑполнение.
ÐлÑÑевое Ñлово yield
вÑзÑÐ²Ð°ÐµÑ Ð¾ÑÑÐ°Ð½Ð¾Ð²ÐºÑ ÑÑнкÑии-генеÑаÑоÑа и возвÑаÑÐ°ÐµÑ ÑекÑÑее знаÑение вÑÑажениÑ, Ñказанного поÑле клÑÑевого Ñлова yield
. Ðго можно ÑаÑÑмаÑÑиваÑÑ ÐºÐ°Ðº аналог клÑÑевого Ñлова return
в ÑÑнкÑии-генеÑаÑоÑе.
Ðа Ñамом деле клÑÑевое Ñлово yield
возвÑаÑÐ°ÐµÑ Ð¾Ð±ÑÐµÐºÑ Ñ Ð´Ð²ÑÐ¼Ñ Ð¿Ð°ÑамеÑÑами, value
и done
. ÐÑи ÑÑом, value
ÑвлÑеÑÑÑ ÑезÑлÑÑаÑом вÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле yield
, а done
ÑказÑваеÑ, бÑла ли завеÑÑена ÑÑнкÑиÑ-генеÑаÑоÑ.
Ðо вÑÐµÐ¼Ñ Ð¾ÑÑановки на опеÑаÑоÑе yield
, вÑполнение кода в ÑÑнкÑии-генеÑаÑоÑе не возобновиÑÑÑ, пока не бÑÐ´ÐµÑ Ð²Ñзван меÑод next()
возвÑаÑаемого ÑÑнкÑией обÑекÑа-генеÑаÑоÑа. ÐÑо пÑедоÑÑавлÑÐµÑ Ð½ÐµÐ¿Ð¾ÑÑедÑÑвеннÑй конÑÑÐ¾Ð»Ñ Ð·Ð° вÑполнением генеÑаÑоÑа и возвÑаÑом его знаÑений.
СледÑÑÑий ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ ÐºÐ¾Ð´Ð° ÑодеÑÐ¶Ð¸Ñ Ð¾Ð¿Ñеделение ÑÑнкÑии-генеÑаÑоÑа и вÑпомогаÑелÑной ÑÑнкÑии:
function* foo() {
var index = 0;
while (index <= 2)
// пÑи доÑÑижении 2, done в yield ÑÑÐ°Ð½ÐµÑ true, а value undefined;
yield index++;
}
ÐоÑле Ñого как Ñело ÑÑнкÑии-генеÑаÑоÑа опÑеделено, оно Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¸ÑеÑаÑоÑа:
var iterator = foo();
console.log(iterator.next()); // { value:0, done:false }
console.log(iterator.next()); // { value:1, done:false }
console.log(iterator.next()); // { value:2, done:false }
console.log(iterator.next()); // { value:undefined, done:true }
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
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