yuuka_maniaの日記: Javascript generator function とか、yield とか 1
日記 by
yuuka_mania
なんとなくあるのはわかってたものの、見て見ぬふりをしてたが、簡単なサンプルを書いてみた。
意識すれば使い出もありそうだし、綺麗に書けるケースもあるだろうが、どうだろうなぁ。
% node
Welcome to Node.js v16.13.0.
Type ".help" for more information.
> function* gen(x, y) {
... yield 10;
... yield 20;
... return x * y;
... }
undefined
> x = gen(3, 4);
Object [Generator] {}
> x.next().value;
10
> x.next().value;
20
> x.next().value;
12
> x.next().value;
undefined
async/await (スコア:0)
async/awaitが出る前はJavaScriptで関数の実行を中断・再開する仕組みとして大いに期待されてたんだろうけど、
async/awaitが登場したから本来のジェネレータ用途以外での使いどころが壊滅して要らない子になっちゃった感。
値を複数回に分けて返す処理の使いどころがなぁ……
ああでもストリームとか逐次読みする奴はジェネレータでも表現できるかも?
でもそれならジェネレータの中でawait使いたいよなぁ……
あれか。yieldでプロミス返しゃ良いのか?
だめだどうにもスッキリした用途に辿り着かねぇ……