redux-saga 错过了一些快速发射的相同动作
redux-saga some of the rapid fired same actions missed
你好,我在其中一个 React 组件中有一个 onChange 回调,它通过这样的映射调用多次分派一个动作:
onChange: (items, newRatio) => {
items.map( item => {
dispatch(itemActions.updateStart({
...item,
adjusted_ratio: _.round(item.adjusted_ratio + newRatio, 1),
}))
})
}
我有一个 "items" 的 Saga,就像这样:
// Updating an Item
function* watchUpdate() {
while(true) {
const { record: unsavedItem, } = yield take(itemTypes.ITEMS_UPDATE_START);
const task = yield fork( updateItemDbCrud, unsavedItem )
}
}
function* updateItemDbCrud(unsavedItem) {
const savedItem = yield call( api.update, unsavedItem );
const result = yield put ( itemActions.updateSuccess(savedItem) )
}
export default [watchUpdate]
换句话说,我预计每当调度 ITEMS_UPDATE_START 操作时,它都会分叉一个新的 updateItemDbCrud 并继续做一些 API 工作,但我注意到只有序列中的第一个派遣通过。我用叉子错了吗?
谢谢!
这是一个已知问题 (https://github.com/yelouafi/redux-saga/issues/50),它与承诺的性质及其在 Redux Sagas 核心中的使用有关。
0.6版本已解决。
如果您想了解导致问题的更多信息,我建议您阅读上述 github 问题以及 Jake Archibald 关于任务、微任务、队列和计划的文章。
https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/
你好,我在其中一个 React 组件中有一个 onChange 回调,它通过这样的映射调用多次分派一个动作:
onChange: (items, newRatio) => {
items.map( item => {
dispatch(itemActions.updateStart({
...item,
adjusted_ratio: _.round(item.adjusted_ratio + newRatio, 1),
}))
})
}
我有一个 "items" 的 Saga,就像这样:
// Updating an Item
function* watchUpdate() {
while(true) {
const { record: unsavedItem, } = yield take(itemTypes.ITEMS_UPDATE_START);
const task = yield fork( updateItemDbCrud, unsavedItem )
}
}
function* updateItemDbCrud(unsavedItem) {
const savedItem = yield call( api.update, unsavedItem );
const result = yield put ( itemActions.updateSuccess(savedItem) )
}
export default [watchUpdate]
换句话说,我预计每当调度 ITEMS_UPDATE_START 操作时,它都会分叉一个新的 updateItemDbCrud 并继续做一些 API 工作,但我注意到只有序列中的第一个派遣通过。我用叉子错了吗?
谢谢!
这是一个已知问题 (https://github.com/yelouafi/redux-saga/issues/50),它与承诺的性质及其在 Redux Sagas 核心中的使用有关。
0.6版本已解决。
如果您想了解导致问题的更多信息,我建议您阅读上述 github 问题以及 Jake Archibald 关于任务、微任务、队列和计划的文章。
https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/