Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】Generator::Generator.prototype.nextインスタンスメソッドの使い方

Generator.prototype.next()インスタンスメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Generator.prototype.next()メソッドは、JavaScriptのジェネレーター関数(またはジェネレーターオブジェクト)の実行を制御するメソッドです。ジェネレーター関数は、実行を途中で一時停止し、後で再開できる特殊な関数ですが、このnext()メソッドはその一時停止したジェネレーターの実行を再開するために使用されます。

具体的には、next()メソッドが呼び出されると、ジェネレーター関数は以前に一時停止した場所から処理を再開し、次に現れるyield式までコードを実行します。yield式に到達すると、ジェネレーターはそこで再び実行を一時停止し、yieldされた値を戻り値として提供します。

このメソッドの戻り値は、必ず2つのプロパティを持つオブジェクトです。一つはvalueプロパティで、これはyield式によって生成された値を含みます。もう一つはdoneプロパティで、これはジェネレーターの実行が完了したかどうかを示すブール値です。ジェネレーターがまだ値を生成できる状態であればdone: falseとなり、全てのyield式が処理され、ジェネレーターが完了した場合はdone: trueとなります。ジェネレーターが完了した際には、valueプロパティは通常undefinedになります。このメカニズムにより、ジェネレーターから値を段階的に取り出し、非同期処理や無限シーケンスのイテレーションを効率的に行うことが可能になります。

公式リファレンス: Generator.prototype.next()

構文(syntax)

1function* myGenerator() {
2  const receivedValue = yield "First value from generator";
3  console.log(`Generator received: ${receivedValue}`);
4  yield "Second value from generator";
5}
6
7const generatorObject = myGenerator();
8
9// next() メソッドを引数なしで呼び出すと、ジェネレータを開始し、最初の yield まで実行します。
10// この時点では、generatorObject 内の receivedValue には何も代入されません。
11generatorObject.next();
12
13// next() メソッドに引数を渡すと、それが前回の yield 式の戻り値となります。
14// ここで渡した "Hello" が generatorObject 内の receivedValue に代入されます。
15generatorObject.next("Hello");

引数(parameters)

value

  • value: any: ジェネレーターの実行を再開する際に、yield 式の評価結果として渡される値。指定しない場合は undefined となります。

戻り値(return)

{ value: any, done: boolean }

Generator.prototype.next() メソッドは、ジェネレーターの実行を再開し、次の値を生成します。戻り値は、value プロパティに生成された値、done プロパティにジェネレーターが完了したかどうかを示す真偽値を持つオブジェクトです。

関連コンテンツ