gpt4 book ai didi

javascript - 使用 redux observable 取消请求不起作用

转载 作者:行者123 更新时间:2023-12-03 00:39:51 27 4
gpt4 key购买 nike

我正在尝试使用 redux-observable 在我的请求中添加取消功能。尝试实现一个简单的登录示例。目前,我添加取消后无法再次提交登录请求。

const loginUserApiCall = (username, password) => {
return new Promise((resolve, reject) => {
if (username === "foo" && password === "foo") {
resolve({
user: { name: "foo", lastName: "fooLName", email: "foo@gmail.com" }
});
}
reject({ err: "Creds are incorrect" });
});
};

const loginRequestEpic = (action$, state$) =>
action$.pipe(
ofType(LOGIN_REQUEST),
mergeMap(action => {
const { username, password } = action.payload;
return loginUserApiCall(username, password);
}),
mergeMap(res => of(loginSuccess(res))),
takeUntil(action$.pipe(ofType(LOGIN_CANCELLED))),
catchError(err => {
return of(loginFailure(err))
})
);

我做错了什么,因为取消没有发生,并且取消后我无法重试请求?一旦用户取消,我应该能够再次重试。

最佳答案

一旦执行 takeUntil ,它将完成您的可观察,当抛出错误并且整个流被停用时也是如此。您可以在末尾添加repeat运算符

  action$.pipe(
ofType(LOGIN_REQUEST),
mergeMap(action => {
const { username, password } = action.payload;
return loginUserApiCall(username, password);
}),
mergeMap(res => of(loginSuccess(res))),
takeUntil(action$.pipe(ofType(LOGIN_CANCELLED))),
catchError(err => {
return of(loginFailure(err))
}),
repeat()
);

关于javascript - 使用 redux observable 取消请求不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53508804/

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