es6 では、ジェネレーターは非同期タスクをカプセル化するために使用されます。これは非同期タスクのコンテナーであり、指定された時間に従って関数を実行または一時停止できます。関数を定義するとき、関数の間に があります。キーワードと関数名。アスタリスク (*)、構文は「function *name(){..yield..}」です。
このチュートリアルの動作環境: Windows 10 システム、ECMAScript バージョン 6.0、Dell G3 コンピューター。
ジェネレーターは主に非同期プログラミングであり、非同期タスクをカプセル化するために使用されます。非同期タスクのコンテナーであり、関数を同時に実行または一時停止できます。私たちが指定します。
ジェネレーター関数の定義と通常の関数の定義の違いは次のとおりです。
関数キーワードと関数名の間に * (アスタリスク) があります。
Yield は、各関数の内部状態を定義するために関数内で使用されます。
関数内に return ステートメントがある場合、それが関数内の最後の状態になります。
使用構文:
function *name(){ ... yield; //需要暂停的时候加yield ... yield; ... } const p = name(); p.next() //调用函数,执行到第一个yield处停止 p.next() //从上一个yeild开始执行,到下一个yield处为止
簡単な例を見てみましょう:
// 定义 function* sayHello() { yield 'hello'; yield 'world'; return 'ending'; } // 调用 // 注意,hw获取到的值是一个遍历器对象 let g = sayHello();
上の例では、sayHello という名前のジェネレーター関数を定義しています。この関数の内部には式と return が 2 つあります。表現。したがって、関数内には hello、world、return ステートメント (実行終了) の 3 つの状態があります。最後に、この関数を呼び出してトラバーサー オブジェクトを取得し、それを変数 g に割り当てます。
ジェネレーター関数の呼び出し方法は、通常の関数「関数名()」と全く同じです。違いは次のとおりです。
関数が呼び出された後、内部コード (最初の行から始まる) はすぐには実行されません。
関数が呼び出された後、戻り値が返されます。この値は、内部状態を指すポインタ オブジェクトです。本質的には、関数の内部状態を含むトラバーサ オブジェクトです。
[関連する推奨事項: JavaScript ビデオ チュートリアル 、Web フロントエンド ]
以上がes6でのジェネレーターの使用法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。