ES6 - ジェネレータジェネレータ

ジェネレータ機能は、様々な角度に理解されています。まず、ジェネレータ関数であるように構文は、それが理解することができる状态机、パッケージの内部状態の複数。

ジェネレータ関数は、関数発生器状態機械、又はビジターオブジェクト生成機能に加えて、ある実行ビジターオブジェクトを返します。訪問者のオブジェクトを返す、あなたはジェネレータ関数内の各状態を経て回すことがあります。

ジェネレータ関数は通常の関数であるが、2つの機能があります。まず、functionキーワードや関数名の間にアスタリスク(*)があり、第二に、使用する関数yield式を、内部状態の異なる定義(英語での収率は、「出力」を意味します)。

function* helloWorldGenerator() {
  yield 'hello';
  yield 'world';
  return 'ending';
}

var hw = helloWorldGenerator();

行われていない、また関数が結果を返すようになっているが、オブジェクトの内部状態を指すようにポインタジェネレータ関数を呼び出した後

次に、あなたは訪問者のオブジェクトを呼び出す必要がありますnext方法を、その次の状態へのポインタが移動しています。これは、各呼び出しでnext次まで、ヘッドの機能や実行を停止する方法、一箇所から内部ポインタyield表現(あるいはreturnこれまでの文)。換言すれば、発電が行わ区分関数は、収量の発現がされている中断実行標識、及びnext方法ができ再開実行。

hw.next()
// { value: 'hello', done: false }

hw.next()
// { value: 'world', done: false }

hw.next()
// { value: 'ending', done: true }

hw.next()
// { value: undefined, done: true }

value表しyieldまたはreturn値(ノーリターン文の場合は、value属性の値はundefined)、doneトラバースを終了するかどうかを示します。

おすすめ

転載: www.cnblogs.com/tangge/p/12122035.html