在任何请求和响应之后,请调用api

时间:2019-09-10 12:18:47

标签: reactjs redux redux-saga

我需要通过检查某些条件来调用api。但是在任何请求/响应之后都需要此api调用。但是我找不到任何有用的东西。

因此,我正在寻找一种使用redux-saga设置项目的解决方案,以便可以在任何请求/响应上调用api。

例如我们可以在不同的地方进行不同的api调用;

.fetch('/books')
.fetch('/copies')
etc.

现在,我还希望在每次提取时都调用一个api(在请求之前和响应之后)。希望这现在很清楚。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

假设您有一种可靠的方式来识别响应动作,则可以使用pattern函数来匹配所有响应动作并触发另一个调用。

例如:

// assuming your response success action types all look like "REQUEST_TYPE_SUCCESS"
function isResponse(action) {
    return action.type.endsWith("SUCCESS")
}

function* makeApiCall(action) {
    // maybe do some logic to determine the api call based on the action
    yield call(asyncApiCall, args);
}

function* responseWatcher() {
    // consider takeLatest or takeLeading instead of takeEvery depending on your use case
    yield takeEvery(isResponse, makeApiCall);
}

然后将responseWatcher添加到您的根目录中,但您要进行设置。

如果您需要有关take助手的pattern arg的更多信息,请参见take的api参考:https://redux-saga.js.org/docs/api/#takepattern