2016-10-29 5 views
0

Я знал о:RxJava: как повторить дальше?

  • retryWhen(...), что позволяет нам повторить на ошибки

  • и repeatWhen(...), которые позволяют заново попытать на полной

Есть ли оператор, как это:

return Observable.just(isUpdating) 
      .repeatWhenOnNext(isUpdating -> { 
       if(isUpdating) { 
        return Observable.timer(2, TimeUnit.SECONDS); // repeat after two seconds 
       } else { 
        return Observable.just(isUpdating); // flow down to concatMap 
       } 
      }) 
      .concatMap(o -> doSomeWorkONLYWhenIsNotUpdating()); 

ответ

1

Хм ... Нет, но, возможно, это будет делать:

return Observable 
    .interval(0, 2, TimeUnit.SECONDS) 
    .filter(dummy -> !isUpdating) 
    .take(1) 
    .flatM(dummy -> doSomeWorkONLYWhenIsNotUpdating()); 
Смежные вопросы