Generator.prototype.next()

この翻訳は不完全です。英語から この記事を翻訳 してください。

これは Harmony(ECMAScript 6) 提案の一部であり、実験段階の技術です。
この技術の仕様は安定していません。ブラウザ互換性の一覧表を確認してください。またこれらの構文や動作は、仕様変更などにより、新しいバージョンのブラウザでは変更される可能性があるという点に注意してください。

概要

donevalueの2つのプロパティを持ったオブジェクトを返します。 ジェネレータに値を送るためにnextメソッドに引数が提供されております。

構文

gen.next(value)

引数

value
ジェネレータに送る値

戻り値

2つのプロパティを持ったオブジェクト :

  • done (boolean)
    • イテレータが反復配列の末端を過ぎていたら、true値になります。この場合に、value は任意の方法でイテレータのreturn valueを明示します。
    • イテレータがシーケンス内の次の値を生成できたら、false値になります。これは全くdoneプロパティを明示しないのと同等です。
  • value - イテレータによって返されるJavaScript値。 donetrueのとき、省略することができます。

例: next()を使う

次の例では、nextメソッドが返す簡単なジェネレータとオブジェクトを示します。:

function* gen() { 
  yield 1;
  yield 2;
  yield 3;
}

var g = gen(); // "Generator { }"
g.next();      // "Object { value: 1, done: false }"
g.next();      // "Object { value: 2, done: false }"
g.next();      // "Object { value: 3, done: false }"
g.next();      // "Object { value: undefined, done: true }"

例: ジェネレータに値を送る

この例では、nextは値とともに呼ばれます。最初の呼び出しが何も記録しないことに注意して下さい。というのも、ジェネレータが初めは何も得られていないからです。

function* gen() {
  while(true) {
    var value = yield null;
    console.log(value);
  }
}

var g = gen();
g.next(1); 
// "{ value: null, done: false }"
g.next(2); 
// "{ value: null, done: false }"
// 2

仕様

仕様 状況 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Generator.prototype.next' in that specification.
Standard Initial definition.

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート ? 26 (26) ? ? ?
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート ? ? 26.0 (26) ? ? ?

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: shide55
 最終更新者: shide55,