Nachdem ich gerade von Thunks zu Sagas bewegt habe, versuche ich den besten Weg zu finden setTimeout
und dann von innerhalb dieser Funktion rufen Sie eine andere Funktion (in diesem Fall corewar.step()
). Dies war mein ursprünglicher Code, der so funktioniert, wie ich es erwarten würde.Verwenden von Redux-Saga mit setInterval - Wie und wann zu
runner = window.setInterval(() => {
for(let i = 0; i < processRate; i++) {
corewar.step()
}
operations += processRate;
}, 1000/60)
Dieser Code ist in einem saga
und ich glaube, dass ich in der Lage sein sollte, Funktionsaufrufe innerhalb call
zu wickeln, wie ich in anderen Bereichen in der Anwendung getan habe.
Ich habe versucht, die setInterval
Anruf in eine call
und alles andere wie es ist, was in step()
nie aufgerufen wird.
runner = yield call(window.setInterval,() => {
for(let i = 0; i < processRate; i++) {
corewar.step()
}
operations += processRate;
}, 1000/60)
Ich habe versucht, die setInterval
verlassen, da sie die step()
Funktion in einem Aufruf und Ändern der anonymen Funktion Signatur function*
die auch Ergebnisse in step()
nie genannt wird, ist und Verpackung.
runner = window.setInterval(function*() {
for(let i = 0; i < processRate; i++) {
yield call([corewar, corewar.step])
}
operations += processRate;
}, 1000/60)
Schließlich Ich habe beide versucht, Einwickeln, die wiederum in step()
führt nie aufgerufen wird.
runner = yield call(window.setInterval, function*() {
for(let i = 0; i < processRate; i++) {
yield call([corewar, corewar.step])
}
operations += processRate;
}, 1000/60)
Es fühlt sich an wie ich etwas fehlt bin hier so meine Frage ist, sollte ich brauche diese Funktionen einpacken in call
überhaupt oder ist das falsch?
Die Folge auf Frage, ob ich sein, um die äußere setInterval
in einem call
würde wickeln werde soll, wie soll ich eine Funktion als Parameter an call
werden definiert, die entweder eine Ausbeute will auch put
oder call
selbst?
Hmm, du hast recht Ich muss eine seltsame Kombination von Versuchen gehabt haben, Generatoren als CB-Parameter zu verwenden (die zusätzliche Klammer war nur ein Tippfehler, entfernt von q) – dougajmcdonald