我想依次调用2个api调用。
两个api分别可以正常工作。
我做一个佐贺(?)
yield put(createAction1(arg1))
yield put(createAction2(arg2))
但是我认为它们可以同时运行(不保证执行顺序)
我在google上找到了建议这样做的github问题
response1 = yield call(apiCallFunc, createAction1(arg1))
response2 = yield call(apiCallFunc, createAction2(arg2))
然后,我必须对response1和response2进行success
个操作。
我想知道是否没有办法使用put
重用已经创建的saga(?)?
在以下示例中,我不知道checkout
的正确名称。我在问题中称它们为saga(?)。
我想利用已经存在的checkout
或rootSaga
处理CHECKOUT_REQUEST
动作的..
假设我在function* checkout1() function* checkout2, function* checkout3
中有checkout1
,我想使用checkout2
和checkout3
function* checkout() {
// query the state using the exported selector
const cart = yield select(getCart)
// ... call some API endpoint then dispatch a success/error action
}
export default function* rootSaga() {
while (true) {
yield take('CHECKOUT_REQUEST')
yield fork(checkout)
}
}
答案 0 :(得分:0)
我假设您想从另一个生成器函数中产生一些生成器函数。
然后在您的函数* checkout1中,您可以产生另外两个生成器
function* checkout1 {
try {
yield call(checkout2)
yield call(checkout3)
yield put(successAction())
} catch (error) {
yield put(errorAction())
}
}
或者您可以在两个try-catch块中完成
function* checkout1 {
try {
yield call(checkout2)
yield put(successAction1())
} catch (error) {
yield put(errorAction1())
}
try {
yield call(checkout3)
yield put(successAction2())
} catch (error) {
yield put(errorAction2())
}
}
或您需要的任何其他组合。