Эта статья нуждается в техническом обзоре. Как вы можете помочь.
Эта статья нуждается в редакционном обзоре. Как вы можете помочь.
Сводка
Ключевое слово yield
используется для остановки и возобновления функции-генератора.
Синтаксис
yield [[выражение]];
-
выражение
-
Возвращаемое выражение. Если не указано, то возвращается значение
undefined
.
Описание
Ключевое слово 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 6 (ECMA-262) Определение 'Yield' в этой спецификации. |
Кандидат в рекомендации | Изначальное определение. |
Совместимость с браузерами
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Базовая поддержка | ? | ? | ? | ? | ? |
Возможность | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Базовая поддержка | ? | ? | ? | ? | ? |