サンクからサガに移動したばかりなので、setTimeout
を呼び出してから別の関数(この場合はcorewar.step()
)を呼び出す最良の方法を見つけようとしています。これは私が期待していたように機能する私の元のコードでした。setIntervalでredux-sagaを使用する - いつ、どのようにするか
runner = window.setInterval(() => {
for(let i = 0; i < processRate; i++) {
corewar.step()
}
operations += processRate;
}, 1000/60)
このコードはsaga
の内側にあると私は私がアプリケーション内の他の地域で行われてきたようにcall
内の関数呼び出しをラップすることができるはずと信じています。
私はsetInterval
の呼び出しをcall
にラップして、それ以外はすべてそのまま残してみました。その結果、step()
は決して呼び出されません。
runner = yield call(window.setInterval,() => {
for(let i = 0; i < processRate; i++) {
corewar.step()
}
operations += processRate;
}, 1000/60)
は、私はそれがあるとしてsetInterval
を残して、通話中にstep()
機能をラップしても決して呼ばれませんされてstep()
になりfunction*
への匿名関数のシグネチャを変更し、試してみました。
runner = window.setInterval(function*() {
for(let i = 0; i < processRate; i++) {
yield call([corewar, corewar.step])
}
operations += processRate;
}, 1000/60)
は最後に、私は再び呼び出されることはありませんされてstep()
、その結果、両方をラップしようとしました。
runner = yield call(window.setInterval, function*() {
for(let i = 0; i < processRate; i++) {
yield call([corewar, corewar.step])
}
operations += processRate;
}, 1000/60)
私の質問があるので、私はここで何かが欠けてるように感じる、私は全くcall
でこれらの機能をラップする必要があるか、この間違っている必要がありますか?私はcall
に外側setInterval
をラップすることになっていたら質問に従って
は私もput
またはcall
自体のいずれかを得たいcall
へのパラメータとして関数を定義する必要がありますどのようにでしょうか?
私は発電機をCBパラメータとして使用しようとしているのではないかと思います(余分な括弧はqから削除されています) – dougajmcdonald