我是Reactjs的新手,所以如果有什么不对的地方,请告诉我 关于异步,redux-saga,我有一件事要问 基本上,我有一个简单的动作:当我选择一个项目=>删除它,如果成功,再次调用获取所有项目的api 像这样:(这发生在我的传奇中)
export function* delete (action)
yield call(service.deleteanitem)
....
yield call(service.getall)
yield put {type: 'getall'}
我的想法是,我希望它是顺序的,我的意思是,当我删除项目时,“getall”动作必须在上一个动作完成时“等待”,然后轮到它。
有什么建议吗?
答案 0 :(得分:0)
a' getall'行动必须等待'无论何时完成上一个动作, 轮到它了。
只需使用全权重fork
saga流程,并使用异步操作构建自己的自定义执行流程。
涵盖任何具有交叉等待依赖关系的情况的示例:
function* sagaProc() {
let controlPromise, controlResolve;
while(true) {
// ...
controlPromise = new Promise(resolve => (controlResolve = resolve))
socket.on('message', msg => controlResolve(msg))
yield put({ type: 'SOME_REQUEST' })
yield call(() => fetch('SOME_URL'))
const message = yield call(() => controlPromise)
yield put({ type: 'SOME_RESPONSE', ...message })
// ...
}
}
function* mainSaga() {
// ...
yield fork(sagaProc)
// ...
}