gpt4 book ai didi

javascript - catch block 中的 Redux-saga 产量 put() 未执行

转载 作者:太空宇宙 更新时间:2023-11-04 15:27:28 28 4
gpt4 key购买 nike

我遇到的问题真的很奇怪。由于某种原因,我的 catch block 中的 put 没有在下面执行。这是我的传奇:

function* postLoginFormSaga(action) {
let response;
try {
// Data from emitting login action
response = yield call(AuthenticationApi.login, action.formData);
yield put(createLoginSucceedAction());
yield put(push('/dashboard/summary'));
} catch (e) {
console.log(e);
yield put(createLoginFailAction(response))
}
}

还有我的 api 调用,它有一个自定义中间件来处理非 2XX 响应:

static login = (formData) => {
return fetch('/api/login', {
method: 'POST',
body: formData,
credentials: 'same-origin'
}).then(handleFetchErrorMiddleWare)
.then(r => r.json())
};

中间件函数是一个简单的函数,用于检查 response 对象的 ok 属性:

export function handleFetchErrorMiddleWare(response) {
if (!response.ok){
throw Error(response.status)
}
return response
}

中间件工作正常,因为我可以在引发异常时看到 console.log(e) 的输出,但 yield put(createLoginFailAction(response)) code> 没有被发出...见下文:

enter image description here

有什么想法吗?谢谢

最佳答案

在我看来,createLoginFailAction 函数中存在错误,如果是这样,就会导致您看到的结果。

关于javascript - catch block 中的 Redux-saga 产量 put() 未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45105681/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com