ご存知のとおり、JavaScript は軽量プログラミング言語であり、ジェネレーターは ECMAScript 2015 で導入されました。ジェネレーターは、多くの出力値を持ち、停止および開始できるプロセスです。 JavaScript では、ジェネレーターは、ジェネレーター オブジェクトの反復可能オブジェクトを生成するジェネレーター関数で構成されます。
この記事では、JavaScript のジェネレーターと JavaScript のさまざまなタイプのジェネレーターについて、詳細な構文と例を示して詳しく説明します。
ジェネレーター関数は通常の関数と同じですが、1 つの違いとして、ジェネレーター関数は再開および一時停止できる点が異なります。一般に、JavaScript では、関数は呼び出されると停止しません。通常、ジェネレーターの概念は非同期プログラミングに現れます。
次に、JavaScript のジェネレーター関数の構文について説明し、通常の関数と比較します。
function * 構文はジェネレーター関数の構築に使用され、yield キーワードはジェネレーター関数を一時停止するために使用されます。
リーリージェネレーター関数が初めて呼び出されたとき、そのコードは何も実行されませんが、ジェネレーター オブジェクトが返されます。値はジェネレーターの next() メソッドを呼び出すことによって消費されます。このメソッドは、yield キーワードに遭遇するまでコードを実行し、キーワードが検出された時点で一時停止し、next() が再度呼び出されるまで待機します。
上記のコードでは、最後のステートメントの後、g.next() を連続して呼び出しても、同じ戻りオブジェクト: {value: unknown, Did: true} のみが生成されます。これは、「world」の後には何も定義されていないためです。 genFunc() 関数。
yield キーワードは、ジェネレーター関数の実行を一時停止し、それに続く式の値をジェネレーターの呼び出し元に提供します。これは、return キーワードのジェネレーターベースのバージョンに相当します。 yield を含むジェネレーター関数からのみ直接呼び出すことができます。
通常の関数では、「*」関数は使用しません。上の例でわかるように、yield 関数も使用しません。上で説明したように、通常の関数とジェネレーター関数の主な違いは、ジェネレーター関数は停止および一時停止できることです。したがって、上記の例から、停止することを選択せず、ステートメント全体 (「Hello world」) を直接出力したことがわかります。
ジェネレーター関数の基本を理解したので、さまざまなタイプのジェネレーター関数に移りましょう -
通常のジェネレーターでは、ジェネレーターは反復子として機能し、関数を生成するために next() メソッドを呼び出すたびに次の値を生成します。リストの最後まで数値を 1 つずつ生成する例を見てみましょう。
リーリー上記のコードでは、yield キーワードを含む通常のジェネリック関数を作成し、next() 関数を使用してそれを複数回呼び出します。
パラメーター付きジェネレーターは通常のジェネレーターとは少し異なります。今回は next() 関数を使用してパラメーターを渡し、ジェネレーター関数に送信する必要があります。また、パラメーターを渡すたびに、パラメーターは yield キーワードの前ではなく後に保存されます。この概念は、次の例で理解できます -
リーリー上記のコードでは、ジェネレーター関数を定義し、今回はそれにパラメーターを渡しました。初めてオブジェクトを呼び出すとき、指定されたパラメータは出力されません。これは、「yield」キーワードの前に送信され、送信された値が変数に格納されて出力された後、2 回目に値が出力されるためです。現在出力がないため、何も起こりません。
ジェネレーターはオブジェクトとして使用でき、呼び出すと、割り当てられた値のみを返し、出力できます。この概念を理解するために、例を見てみましょう。
リーリー上記のコードでは、最初に 3 つの yield 式を定義し、その後に文字列を定義します。ジェネレーターを呼び出すと、それらに続く文字列が返されます。
戻り値の型など、他のタイプのジェネレーターもあります。一部のジェネレーターには内部に別のジェネレーターが含まれています。
###結論は###以上がJavaScript のさまざまな種類のジェネレーターについて説明するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。