首页 > 解决方案 > 在任何请求和响应之后,调用一个 api

问题描述

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

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

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

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

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

标签: reactjsreduxredux-saga

解决方案


假设您有一种可靠的方法来识别作为响应的操作,您可以使用一个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如果您需要有关patternarg 的更多信息,请参阅 api 参考takehttps ://redux-saga.js.org/docs/api/#takepattern


推荐阅读