gpt4 book ai didi

javascript - Angular retryWhen 与条件状态码

转载 作者:行者123 更新时间:2023-12-01 00:21:35 26 4
gpt4 key购买 nike

我对 retryWhen 有疑问。

我正在做一个条形码扫描应用程序,要求是当状态代码为500时,我们将重试请求,如果为400,则将该条形码推送到数组中(列出错误400的条形码)。

我需要按照上面的要求运行 .retryWhen 并使用状态代码。我的代码现在是这样的,但它总是在出现错误时重试并跳过 .subcribe,我需要处理错误 400,我只需要在状态代码为 500 时重试,使用 400然后将该条形码插入数组中。

let modelItem = {
...
};
this._pickAppSv.updateTicketStatus(modelItem, !endWave)
.retryWhen((obs) => { // Retry when error status is 500, 10 times
return obs
.mergeMap(error => (error.status === 500) ? Observable.throw(error) : Observable.of(error))
.take(9);
})
.subscribe(
(resp: any) => {
...
},
(err) => {
if (err.message === 'Bad Request') { // error 400
this.errorList.push(modelItem);
}
}
);

我查了很多资料,但似乎没有解决办法。非常感谢您的帮助。

最佳答案

Shashank的回答是正确的。但由于某种原因,我的 rxjs 版本无法与 .pipe 一起使用,所以我对其进行了一些更改。谢谢沙尚克。

this._pickAppSv.updateTicketStatus(modelItem, !endWave)
.retryWhen((obs) => { // Retry when error status is 500, 10 times
return obs
.mergeMap((error) => {
if (error.status === 500) {
return Observable.of(error)
.delay(500)
}
if (error.status === 400) {
this.errorList.push(modelItem);
throw({error: error.message});
}
return Observable.throw({error: 'Error:' + error});
})
.take(9);
})
.subscribe({
//do something
});

关于javascript - Angular retryWhen 与条件状态码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59367339/

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