RXJava 如何在 x 时间后尝试获取下一个
RXJava how to try to get next after x time
我想每隔 x 秒使用改装调用 Web 服务,直到出现 y 条件。
我想在 x 秒后 运行 OrderApi.get
直到响应为空。
public class OrderApi {}
public static Observable<Order> get() {
//...
}
}
OrderApi.get(order.getId()))
.subscribe(updatedOrder -> {
mShouldRun = updatedOrder != null;
});
已经看到像 Observable.delay
Observable.timber
这样的运算符,但我找不到正确使用它们的方法。
timer
和 repeat
的组合应该可以做到
Observable.timer(1000, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.repeat(Schedulers.io())
.subscribe(new Action1<Object>() {
@Override
public void call(Object aLong) {
System.out.println(System.currentTimeMillis());
}
});
回调 call
每 1 秒调用一次
这应该有效
Observable.interval(1, TimeUnit.SECONDS)
.flatMap(new Func1<Long, Observable<?>>() {
@Override
public Observable<?> call(Long aLong) {
return OrderApi.get();
}
}).takeUntil(new Func1<Object, Boolean>() {
@Override
public Boolean call(Object o) {
return o==null;
}
}).subscribe(observer);
我想每隔 x 秒使用改装调用 Web 服务,直到出现 y 条件。
我想在 x 秒后 运行 OrderApi.get
直到响应为空。
public class OrderApi {}
public static Observable<Order> get() {
//...
}
}
OrderApi.get(order.getId()))
.subscribe(updatedOrder -> {
mShouldRun = updatedOrder != null;
});
已经看到像 Observable.delay
Observable.timber
这样的运算符,但我找不到正确使用它们的方法。
timer
和 repeat
的组合应该可以做到
Observable.timer(1000, TimeUnit.MILLISECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.repeat(Schedulers.io())
.subscribe(new Action1<Object>() {
@Override
public void call(Object aLong) {
System.out.println(System.currentTimeMillis());
}
});
回调 call
每 1 秒调用一次
这应该有效
Observable.interval(1, TimeUnit.SECONDS)
.flatMap(new Func1<Long, Observable<?>>() {
@Override
public Observable<?> call(Long aLong) {
return OrderApi.get();
}
}).takeUntil(new Func1<Object, Boolean>() {
@Override
public Boolean call(Object o) {
return o==null;
}
}).subscribe(observer);