私はこのコードを持っている:私はそれを実行するとsetTimeoutの内部から取得した値にはどうすればアクセスできますか?
function* showValue() {
setTimeout(function*() {
console.log('yielding')
return yield 100;
}, 1000);
}
var valFunc = showValue();
console.log(valFunc.next());
は、私はこの出力を参照してください。
{ value: undefined, done: true }
はなぜ.next()
コールリターン100を持つようにすればよいですか?
'setTimeout'が、それは後の時点で完了し、そのようにあなたはそれから戻ることができない、非同期です。あなたのケースでは、おそらくタイマーがそれをしたことを知ってコールバックや約束を必要とするだろう。 – adeneo
本当に、ジェネレータについてまだ理解していないものがあるかもしれませんが、 'showValue'が一時停止すると、setTimeoutの中でさえどこから降伏しても実行を再開すると思っていました。 – Geo
setTimeoutはid番号以外の何も返しませんが、setTimeoutへのコールバックとして提供される匿名ジェネレータ関数は、時刻が来たときに実行され、返されるジェネレータオブジェクトは失われます。あなたはsetTimeout内でそれをキャプチャし、それに応じて使用する必要があります。 – Redu