我真的很喜欢RxJava,它是一个很棒的工具,但有些时候很难理解它是如何工作的 . 我们在Android项目中使用Retrofit和RxJava,并且有以下用例:
我需要轮询服务器,重试之间有一些延迟,而服务器正在做一些工作 . 服务器完成后,我必须提供结果 . 所以我用RxJava成功完成了它,这里是代码片段:我用“skipWhile”和“repeatWhen”
Subscription checkJobSubscription = mDataManager.checkJob(prepareTweakJob)
.skipWhile(new Func1() {
@Override
public Boolean call(CheckJobResponse checkJobResponse) {
boolean shouldSkip = false;
if (SHOW_LOGS) Logger.v(TAG, "checkJob, skipWhile, jobStatus " + checkJobResponse.getJobStatus());
switch (checkJobResponse.getJobStatus()){
case CheckJobResponse.PROCESSING:
shouldSkip = true;
break;
case CheckJobResponse.DONE:
case CheckJobResponse.ERROR:
shouldSkip = false;
break;
}
if (SHOW_LOGS) Logger.v(TAG