rxjava+retrofit轮询

本文探讨了使用RxJava和Retrofit进行轮询时遇到的问题,特别是如何处理网络请求失败和限制错误重试次数。通过retryWhen和repeatWhen的结合,配合zipWith函数限制错误次数,但在实践中发现它们无法有效配合。解决方案是改用repeat和delay,确保delay在先,repeat在后,以防止无限循环。示例代码展示了如何实现一个在失败3次后停止,每次失败间隔5秒的轮询方法。
摘要由CSDN通过智能技术生成

rxjava+retrofit是一个非常流行的组合,那些从头说到尾的怎么配置的,怎么用的我就不说了,这些网上太多了,我今天说说轮询的一个小问题吧。

1、本来轮询的话会遇到只要写一个repeatWhen就好了,但事情好像没有这么简单,如果遇到了网络请求的失败的话,repeatWhen是不会调用的,因为repeatWhen是在onComplete的时候才触发,这个时候就要用到retryWhen,这个是在onError的时候触发的,关于retryWhen和repeatWhen的区别点击链接

2、如果你是一直都请求超时的话,如果一直请求下去,也是一个不合理的,那么怎么限制请求的次数呢?这个就要用到zipWith这个函数了,当这个函数运行完之后就会调用onComplete的了

3、基于以上的想法,我的第一个做法是使用retryWhen来应付错误,使用repeatWhen来应付轮询的,配合上zipWith来做一个错误的次数限制

4、问题就出现了,我在不断的重复又重复,zipWith根本就没有限制到错误的次数。

5、这个原因我想了很久,和做了实验,发现retryWhen和repeatWhen在这种情况下是不能配合使用的(如果可以的话,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值