ホームページ  >  記事  >  ウェブフロントエンド  >  es6でのジェネレーターの使用法は何ですか

es6でのジェネレーターの使用法は何ですか

WBOY
WBOYオリジナル
2022-05-05 14:51:322067ブラウズ

es6 では、ジェネレーターは非同期タスクをカプセル化するために使用されます。これは非同期タスクのコンテナーであり、指定された時間に従って関数を実行または一時停止できます。関数を定義するとき、関数の間に があります。キーワードと関数名。アスタリスク (*)、構文は「function *name(){..yield..}」です。

es6でのジェネレーターの使用法は何ですか

このチュートリアルの動作環境: Windows 10 システム、ECMAScript バージョン 6.0、Dell G3 コンピューター。

es6 でのジェネレーターの使用法は何ですか

ジェネレーターは主に非同期プログラミングであり、非同期タスクをカプセル化するために使用されます。非同期タスクのコンテナーであり、関数を同時に実行または一時停止できます。私たちが指定します。

ジェネレーター関数の定義と通常の関数の定義の違いは次のとおりです。

関数キーワードと関数名の間に * (アスタリスク) があります。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。