그냥 썽크에서 사가로 옮겼습니다. setTimeout
을 호출 한 다음 다른 함수 (이 경우 corewar.step()
)를 호출하는 가장 좋은 방법을 찾으려고합니다. 이것은 내가 기대했던 것처럼 작동하는 나의 원래 코드입니다.setInterval과 함께 redux-saga 사용하기 - 언제 어떻게 산출합니까?
runner = window.setInterval(() => {
for(let i = 0; i < processRate; i++) {
corewar.step()
}
operations += processRate;
}, 1000/60)
이 코드는 saga
안에 나는 내가 응용 프로그램의 다른 영역에서 수행 한대로 기능이 call
내에서 호출을 래핑 할 수 있어야한다고 생각합니다.
나는 call
에서 setInterval
호출을 래핑하고 그 밖의 모든 것은 그대로 두었습니다. 결과적으로 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
에 매개 변수로 함수를 정의 할 방법 일 것
call
에 외부
setInterval
을 포장 하죠 경우 중 하나
put
또는
call
자체?
흠, CB 매개 변수로 발전기를 사용하려고하는 이상한 조합이 있었음에 틀림 없습니다. (추가 브래킷은 오타 였고 q에서 제거되었습니다) – dougajmcdonald