- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在订阅中捕获异常,但结果不符合预期。
this.userService.isUsernameValid (username)
.pipe (
catchError (err =>
{
return throwError (err);
}),
retryWhen (errors =>
errors.pipe (
delay (2500),
take (4),
concatMap (() => throwError ('Network error'))
)
)
)
.subscribe (
data =>
{
//
},
error =>
{
console.log (error)
});
我希望只有在所有尝试都失败时才抛出异常。
上面的代码只发出第一个请求,如果出错则抛出异常(不重做请求)。
如果我删除 concatMap,将进行 4 次尝试,但如果没有成功,我将无法在订阅中捕获错误。
提前致谢。
最佳答案
您可以在特定条件下自己重新抛出错误。例如 concatMap
将 index
参数传递给它的投影函数,您可以使用它来代替 take()
:
throwError("It's broken")
.pipe(
retryWhen(errors => errors.pipe(
concatMap((e, index) => index === 4 ? throwError(e) : of(null)),
)),
)
.subscribe({
next: x => console.log(x),
error: e => console.log('obs', e),
});
关于angular - 用尽 RxJs retryWhen 运算符尝试后如何抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60906771/
我正在编写逻辑,用于每 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)
我是一名优秀的程序员,十分优秀!