F1s*_*her 11 java android rx-java
您好我正在观察我的服务器每15秒询问其在线/离线状态:
public Observable<Response> repeatCheckServerStatus(int intervalSec, final String path) {
return Observable.interval(intervalSec, TimeUnit.SECONDS)
.flatMap(new Func1<Long, Observable<Response>>() {
@Override
public Observable<Response> call(Long aLong) {
return Observable.create(new Observable.OnSubscribe<Response>() {
@Override
public void call(Subscriber<? super Response> subscriber) {
try {
Response response = client.newCall(new Request.Builder()
.url(path + API_ACTION_CHECK_ONLINE_STATUS)
.header("Content-Type", "application/x-www-form-urlencoded")
.get()
.build()).execute();
subscriber.onNext(response);
subscriber.onCompleted();
if (!response.isSuccessful())
subscriber.onError(new Exception());
} catch (Exception e) {
subscriber.onError(e);
}
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
});
}
Run Code Online (Sandbox Code Playgroud)
在我调用此方法之后,首先执行代码将在intervalSec时间之后(在我的情况下为15秒).查看区间方法的rxJava文档:
http://reactivex.io/documentation/operators/interval.html
这应该是这样的.
问题:有没有办法立即执行代码然后重复间隔?
box*_*box 33
您可以立即执行它,如下所示:
Observable.interval(0, 1000, TimeUnit.MILLISECONDS).subscribe();
Run Code Online (Sandbox Code Playgroud)
Dav*_*jak 10
你在寻找什么 startWith
Observable.interval(15, SECONDS).startWith(1);
Run Code Online (Sandbox Code Playgroud)
这将从间隔获得更新,但在订阅后立即发出一个项目.
| 归档时间: |
|
| 查看次数: |
4718 次 |
| 最近记录: |