问题标签 [retrywhen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1969 浏览

java - RxJava2 使用 retryWhen 和过滤器

我一直在玩retryWhen()方法,我注意到如果您在retryWhen()中使用filter( )并且如果filter()失败,则甚至不会执行回调onCompleted()。你能向我解释为什么会这样吗?提前致谢。

工作案例:

工作输出:

但是当我用 observable 更改过滤器时,filter(throwable -> throwable instanceof IOException)就像处于冻结状态一样。没有触发回调。

0 投票
3 回答
3482 浏览

android - RxJava 2. 在处理其他不同的项目时延迟重试

我有一个从很多来源获取项目的 observable:

源和项目之间的关系是多对多的,并且在不同的源中,项目可能会自我复制。项目是应该上传到服务器的实体,服务器不接受重复项。为了实现这一点,我合并源并通过它们的 id 区分它们的项目,然后将唯一项目上传到服务器。如下所示:

项目上传可能会发出几个错误,其中一些我应该稍后重试上传项目并继续另一个项目,而“失败”的项目正在等待重试。

我如何推迟重试上传“失败”的项目并继续其他项目,而这个项目正在等待它的尝试?

提前致谢!

0 投票
0 回答
274 浏览

angular - angular2 Observable.throw 在 Observable.timer 之后不起作用

retrywhen当通信失败时,我正在尝试执行http.getX 次。

在 X 次之后,我想抛出一个连接失败的错误。

如果我只在我DelayWhen的 an中这样做,Observable.throw它直接工作正常并在第一次尝试时返回。但是,如果我第一次返回一个Obersvable.timer,以延迟下一个尝试连接之后的连接,Observable.throw但它不会被转发到我的上层捕获!?

这个函数是我从另一个服务调用的,并且没有调用 catch。

0 投票
2 回答
5355 浏览

android - 显示对话框后重试 Retrofit 2 和 RxJava2 调用

我正在使用 Retrofit 2 和 RxJava2 调用 API。如果呼叫失败,在某些情况下(例如没有 Internet 连接),我想向用户显示一个错误对话框并让他重试。

当我使用 RxJava 时,我正在考虑使用,.retryWhen(...)但我不知道该怎么做,因为它需要等待用户按下对话框上的按钮。

目前我显示对话框,但它在用户按下任何按钮之前重试。另外,我希望在用户按下“取消”时不会重试呼叫。

这是我目前拥有的代码:

0 投票
2 回答
2221 浏览

angular - Angular http.get 重试失败后抛出错误

我正在尝试通过重试来实现 Angular5 http.get。我写

如果收到错误 500,这将继续重试 5 次。但是,如果它连续 5 次失败,则返回成功(带有空数据)。我不想要那个。相反,我希望它抛出最后一个错误。

我试图放在.concat(Observable.throw({}))take() 之后,这很有效,但它没有给我任何信息,例如最近错误的状态代码。

上次重试失败后如何获取最近的错误?

0 投票
1 回答
1431 浏览

angular5 - Angular 5.2 & RxJS 5.5 HttpInterceptor retryWhen,但更新请求?

我正在尝试拦截 401 响应,在再次尝试请求之前发送刷新令牌请求(但使用不同的标头)。我让它工作,除了retryWhen不让我修改原始请求标头。所以我一直在尝试使用catchError,但我似乎无法再次执行请求。

这是我目前的retryWhen

如果我换掉retryWhencatchError

重要的是我要回来next.handle(newReq)了,它似乎没有触发请求。如果我将其切换为next.handle(newReq).subscribe(),请求将触发但不会触发回调。

这是完整的示例retryWhen

0 投票
1 回答
1060 浏览

kotlin - 如何测试 RetryWhen

我对我的 retryWhen 块进行了测试。使用模拟器进行测试时,它可以正常工作。我还有一个检查重试是否通过的测试。但是,有时我的测试会失败。我尝试使用 Scheduler.immediate。但是,这也会导致测试失败。

测试:

在设置中,我有

拆解,我有:

当我取下钩子时,它通过了。但是,有时测试会失败。我怎样才能使测试稳定?

另外,我得到了一个不可观察的 Emitted NoSuchElementException

0 投票
0 回答
173 浏览

android - 如何在重试时刷新可观察对象的参数

我正在尝试实现一个自动登录功能,并在自动登录完成后需要更改前一个可观察对象的参数时重试。

所以我创建了一个函数

并以这种方式应用它:

也试过这种方式:

}

问题是,在重试请求时登录后,用户没有更新。

我做错了什么?

0 投票
1 回答
582 浏览

angular - 在接收到某个 http 状态时重试 http 调用

我正在尝试捕获并重试 103 Http 错误状态响应。如果服务器理解请求并将开始处理它但资源立即不可用,则服务调用返回 103。我想做的是当我收到 103 时,我想在每 5 秒后重试获取资源最多 5 次,最后我希望它超时并返回 404 错误。这是我到目前为止所拥有的

使用 getError() 函数,我试图模仿 103,因为服务器尚未发送 103。也许 getError() 不能很好地表示 httpError 响应。我不确定如何重现并抛出可观察到的错误。

无论如何,这个设置不起作用。它调用 getError(),失败并一直到 console.log('status is 103'),然后什么都没有。任何帮助表示赞赏。

0 投票
1 回答
1506 浏览

angular - 时间过长时重试连接

当呼叫在挂起时停留超过几秒钟时,Angular 中是否可以重试连接?