rxjava+retrofit是一个非常流行的组合,那些从头说到尾的怎么配置的,怎么用的我就不说了,这些网上太多了,我今天说说轮询的一个小问题吧。
1、本来轮询的话会遇到只要写一个repeatWhen就好了,但事情好像没有这么简单,如果遇到了网络请求的失败的话,repeatWhen是不会调用的,因为repeatWhen是在onComplete的时候才触发,这个时候就要用到retryWhen,这个是在onError的时候触发的,关于retryWhen和repeatWhen的区别点击链接。
2、如果你是一直都请求超时的话,如果一直请求下去,也是一个不合理的,那么怎么限制请求的次数呢?这个就要用到zipWith这个函数了,当这个函数运行完之后就会调用onComplete的了
3、基于以上的想法,我的第一个做法是使用retryWhen来应付错误,使用repeatWhen来应付轮询的,配合上zipWith来做一个错误的次数限制
4、问题就出现了,我在不断的重复又重复,zipWith根本就没有限制到错误的次数。
5、这个原因我想了很久,和做了实验,发现retryWhen和repeatWhen在这种情况下是不能配合使用的(如果可以的话,