- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 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/
我正在编写逻辑,用于每 t 秒检查一个对象的状态,直到它完成。我决定使用 retryWhen 运算符。 getObjectStatus(someObject: someObjectInstance)
我正在关注 this tutorial然后添加这一行: .retryWhen(errors -> errors.flatMap(error -> Observable.timer(30, TimeUn
我一直在使用 retryWhen() 方法,我注意到如果你在 retryWhen() 中使用 filter() 并且如果 filter() 失败,则不会执行回调,甚至 onCompleted() 也不
我对 retryWhen 有疑问。 我正在做一个条形码扫描应用程序,要求是当状态代码为500时,我们将重试请求,如果为400,则将该条形码推送到数组中(列出错误400的条形码)。 我需要按照上面的要求
我正在通过重试实现数据库更新方法。遵循 retryWhen() 运算符的通用模式,如下所述:Using Rx Java retryWhen() .. ..但是我的重试逻辑从未执行过。我正在调试它,可以
看,我在 StackBlitz 上创建了问题 https://stackblitz.com/edit/rxjs-nndpag 我不知道如何正确使用 retryWhen 运算符。我希望它重新订阅我的 p
我正在尝试使用 java Rx(版本 1)重试。 我想要执行 retryWhen 而不是简单的 retry() 因为我希望在达到限制时返回具有特定值的可观察值,而不是仅仅抛出异常. 所以,检查这个 h
我使用 RXJava 调用一个昂贵的递归函数。大多数时候它运行得非常快,但有时它会生成太长的 take 方式 如果线程仍在运行,有没有办法在 5 秒后使用 retryWhen()? observab
我正在学习如何在 RxJava2 中进行数据轮询 到目前为止,这是我的代码。 private io.reactivex.Single getMyTask() { return io.
当对我的外部服务之一的外部 http 请求失败时,我正在使用 retryWhen。问题是我正在使用 RxHelper.toObservable(httpClient.request(method,
我有这样的东西: service.getStuff() .map(...) .observeOn(AndroidSchedule
我是 rxJava 的新手,这可能是一个非常愚蠢的问题,但我无法弄清楚如何在重试时找到异常类型。我想在特定异常(例如 Io 异常)上重试,但在其他异常上重试我想将异常传递到链中。 public Obs
我在 Android 应用程序中使用 Retrofit 和 RxJava 进行通信,并且必须处理解析来自看似正常的 HTTP 响应(状态 200 代码)的响应时的错误。 我还实现了一种使用 retry
我有一个应用程序需要 session (cookie) 来处理网络调用。我正在使用 Retrofit+RxJava。但是, session 可能会过期(Retrofit 错误,状态为 401 Unau
我一直在尝试在 RxSwift 上测试 retryWhen 运算符,但遇到了 Reentrancy Anomaly 问题,这是代码: Observable.create { observer in
我正在玩 RxJava retryWhen运算符(operator)。在互联网上很少找到关于它的信息,唯一值得一提的是 this .这也不足以探索我想了解的各种用例。我还加入了异步执行并通过回退重试,
我想以增加的时间间隔触发 retrywhen(), socketResponse.retryWhen(attempts => { return attempts.zip(Observab
我正在尝试进行 API 调用(使用 angular4),它会在失败时使用 retryWhen 重试。我希望它延迟 500 毫秒并重试。这可以通过以下代码实现: loadSomething(): Obs
如何在 retryWhen 中设置延迟? import 'rxjs/add/operator/retry'; import 'rxjs/add/operator/retrywhen'; ... con
我正在创建一个 Angular Http 重试拦截器。当我重试 1 次时,我的代码如下所示: return next.handle(req).pipe( retryWhen((error)
我是一名优秀的程序员,十分优秀!