ジェネレーター (generator)
Generatorを使用した関数はアロー関数での表記ではなく、必ずfunction*() {}と書く必要があります。次は可能なGeneratorの記述方法です。
tsfunction*generatorFunction1 () {// ...}constgeneratorFunction2 = function* () {// ...};classGeneratorSample {public *generatorFunction3 () {// ...}}
tsfunction*generatorFunction1 () {// ...}constgeneratorFunction2 = function* () {// ...};classGeneratorSample {public *generatorFunction3 () {// ...}}
Generatorは反復可能(Iterable<T>)な反復子(Iterator<T>)であるインターフェースIterableIterator<T>を実装したクラスのオブジェクトのことです。条件を満たしたクラスはGenerator関数の中でyieldキーワードを使えます。yieldは呼ばれたときに一度その値を呼び出し元へ返却し、次に呼ばれたときはその続きから処理を開始します。
Promiseが一般化する以前、非同期処理を代わりに担当する目的でGeneratorが使われていたことはありますが、前述のPromiseに加えてasync / awaitが一般的に使われるようになってから非同期処理の目的でGeneratorを使う機会は減りました。現在でも大量のデータを取得したいときに一度ではなく、小出しに取得したいときにGeneratorは使い道があります。