2016-02-04 18 views
1

您好我有一个的onChange回调中,通过一个地图调用这样的调度动作几次反应的组分之一:终极版 - 佐贺一些快速发射相同的行动错过

onChange: (items, newRatio) => { 
    items.map(item => { 
    dispatch(itemActions.updateStart({ 
     ...item, 
     adjusted_ratio: _.round(item.adjusted_ratio + newRatio, 1), 
    })) 
    }) 
} 

,我有对于“项目”,像这样一个传说:

// 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的工作,但我注意到,只有第一批发货顺序经过。我使用叉子错了吗?

谢谢!

+0

你使用的是什么版本的redux-saga? –

+0

你好,它说0.4.1在我的package.json –

回答

2

这是一个已知的问题(https://github.com/yelouafi/redux-saga/issues/50),它与承诺的性质及其在Redux Sagas核心中的使用有关。

它已在版本0.6中解决。

如果您想了解更多关于导致问题的原因,我建议您阅读上述github问题以及Jake Archibalds关于任务,微任务,队列和时间表的文章。

https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/

+0

它的工作!谢谢,我读过#50的问题,从发布的问题和决议日期来看,信息量非常大,速度惊人。 –