我是一名新的反应型程序员。我想延迟调用观察者的onNext
方法是否有任何好办法?
以例如 -
Observable.create(new Observable.OnSubscribe<Integer>() {
@Override
public void call(Subscriber<? super String> observer) {
try {
if (!observer.isUnsubscribed()) {
// While using create, can call observer.onNext
for(int i=0;i< 10 ;i++)
observer.onNext("");
observer.onCompleted();
}
} catch (Exception e) {
observer.onError(e);
}
}
});
Observable.defer( new Func0<Observable<String>>() {
@Override
public Observable<String> call() {
// I want call observer.onNext("") here
return Observable.just("");
}
});
答案 0 :(得分:0)
因为您只能从一个订阅者调用onNext。我想说创建一个订阅者,然后从这个订阅者调用onNext,如下所示:
final Subscriber<String> subscriber = new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
}
};
Observable.defer(new Func0<Observable<String>>() {
@Override
public Observable<String> call() {
// I want call observer.onNext("") here
subscriber.onNext("Test");
return Observable.just("dasdsa");
}
});
但是,你也可以订阅这个可以在subscribe方法中调用这个“onNext”的observable,如:
Observable.defer(new Func0<Observable<String>>() {
@Override
public Observable<String> call() {
// I want call observer.onNext("") here
return Observable.just("dasdsa");
}
}).subscribe(new Action1<String>() {
@Override
public void call(String s) {
//on Next was called after the subscribe
}
});
我认为由你决定什么更有用,我希望我能够提供帮助!