Этот перевод не завершён. Пожалуйста, помогите перевести эту статью с английского
Ключевое слово yield используется для остановки и возобновления функций-генераторов (function* или legacy generator function).
Синтаксис
[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 }
Спецификации
| Спецификация | Статус | Комментарий |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Yield' в этой спецификации. |
Стандарт | Изначальное определение. |
| ECMAScript (ECMA-262) Определение 'Yield' в этой спецификации. |
Живой стандарт |
Совместимость с браузерами
| Компьютеры | Мобильные | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
yield | Chrome Полная поддержка 39 | Edge Полная поддержка 12 | Firefox
Полная поддержка
26
| IE Нет поддержки Нет | Opera Полная поддержка 26 | Safari Полная поддержка 10 | WebView Android Полная поддержка 39 | Chrome Android Полная поддержка 39 | Firefox Android
Полная поддержка
26
| Opera Android Полная поддержка 26 | Safari iOS Полная поддержка 10 | Samsung Internet Android Полная поддержка 4.0 | nodejs
Полная поддержка
4.0.0
|
Легенда
- Полная поддержка
- Полная поддержка
- Нет поддержки
- Нет поддержки
- Смотрите замечания реализации.
- Смотрите замечания реализации.
- Пользователь должен сам включить эту возможность.
- Пользователь должен сам включить эту возможность.