gpt4 book ai didi

javascript - 具有重试和延迟的 Angular HttpClient 请求正在发送一个额外的请求然后取消它

转载 作者:行者123 更新时间:2023-11-30 09:29:24 25 4
gpt4 key购买 nike

我正在尝试使用 Angulars HttpClient 服务发出请求,尝试多次,中间有延迟。该代码有效,但我在 devTools 网络分路器中注意到,最后发送并取消了一个额外的请求。我在这里做错了什么是代码:

return this.http.post<LoginSuccessPayload>('/api/auth/signin', payload).pipe(
retryWhen(errors => {
return errors.pipe(
mergeMap((er: any) => {
if (er.status === 504 || er.status === 503) {
return of(er.status).pipe(delay(1000));
}
return _throw({message: er.error.message || 'Notification.Core.loginError'});
}),
take(3),
concat(_throw({message: 'Notification.Core.networkError'}))
);
})
);

这是 FirefoxChrome 网络选项卡的图像,应该有三个请求,但它产生了四个并取消了最后一个 enter image description here

最佳答案

我是这样解决的。现在尝试三次,每个请求有第二次延迟,并且没有额外的取消请求

 return this.http.post<LoginSuccessPayload>('/api/auth/signin', payload).pipe(
retryWhen(errors => errors.pipe(
switchMap((error) => {
if (error.status === 504 || error.status === 503) {
return of(error.status);
}
return _throw({message: error.error.message || 'Notification.Core.loginError'});
}),
scan(acc => acc + 1, 0),
takeWhile(acc => acc < 3),
delay(1000),
concat(_throw({message: 'Notification.Core.networkError'}))
))
);

关于javascript - 具有重试和延迟的 Angular HttpClient 请求正在发送一个额外的请求然后取消它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47261758/

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