【发布时间】:2019-05-13 17:41:33
【问题描述】:
我想依次调用 2 个 api 调用。
两个 api 分别工作正常。
我做了一个传奇(?),它确实
yield put(createAction1(arg1))
yield put(createAction2(arg2))
但我认为它们同时运行(不保证执行顺序)
我用谷歌搜索并发现了建议做的 github 问题
response1 = yield call(apiCallFunc, createAction1(arg1))
response2 = yield call(apiCallFunc, createAction2(arg2))
然后我必须 success 对 response1 和 response2 执行操作。
我想知道是否没有办法使用put 重用已经创建的saga(?)?
- 编辑
我不知道以下示例中checkout 的正确名称。我在我的问题中称他们为传奇(?)..
我想利用现有的checkout 或rootSaga 来处理CHECKOUT_REQUEST 动作..
假设我在checkout1 中有function* checkout1() function* checkout2, function* checkout3,我想使用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)
}
}
【问题讨论】:
-
“已经创建的传奇”是什么意思?你能再解释一下你的用例吗?
-
所以你的问题是如何重用这种特殊类型的传奇:on action X: API request X -> success/error。我对吗?如果是这样,则可以创建一个工厂函数,该函数返回像
rootSaga这样的 sagas,但使用自定义操作自定义 API 调用。
标签: redux redux-saga