小编Pla*_*ato的帖子

可观察,仅在完成时重试错误和缓存

我们可以使用cache()运算符来避免多次执行长任务(http请求),并重用其结果:

Observable apiCall = createApiCallObservable().cache(); // notice the .cache()

---------------------------------------------
// the first time we need it
apiCall.andSomeOtherStuff()
               .subscribe(subscriberA);

---------------------------------------------
//in the future when we need it again
apiCall.andSomeDifferentStuff()
               .subscribe(subscriberB);
Run Code Online (Sandbox Code Playgroud)

第一次执行http请求,但第二次,因为我们使用了cache()运算符,请求将不会被执行,但我们将能够重用第一个结果.

第一个请求成功完成时,此工作正常.但是如果在第一次尝试中调用了onError,那么下次新订阅者订阅同一个observable时,将再次调用onError而不再尝试http请求.

我们要做的是,如果第一次调用onError,那么下次有人订阅同一个observable时,将从头开始尝试http请求.即,observable将仅缓存成功的api调用,即调用onCompleted的调用.

关于如何进行的任何想法?我们尝试使用retry()和cache()运算符没有太多运气.

rx-java rx-android

15
推荐指数
3
解决办法
4402
查看次数

Core Motion在后台?

当应用程序处于后台时,Core Motion框架是否可以正常工作?

iphone ios core-motion

7
推荐指数
1
解决办法
2309
查看次数

标签 统计

core-motion ×1

ios ×1

iphone ×1

rx-android ×1

rx-java ×1