创建一个接受参数的Observable

时间:2015-02-09 10:10:46

标签: rx-java

创建能够接受参数的Observable的正确方法是什么?

例如,我可以参数化http请求

1 个答案:

答案 0 :(得分:7)

您可以使用Observable.create

public static Observable<String> createMyObservable(final String all, final Integer my, final Boolean parameters) {
    return new Observable.create(new Observable.OnSubscribe<String>(){

        @Override
        public void call(Subscriber<? super String> subscriber) {
            // here you have access to all the parameters you passed in and can use them to control the emission of items:

            subscriber.onNext(all);
            if (parameters) {
                subscriber.onError(...);
            } else {
                subscriber.onNext(my.toString());
                subscriber.onCompleted();
            }
        }
    });
}

请注意,所有参数必须声明为final或代码不会编译。

如果您希望输入参数随时间变化,它们本身可能是Observable,您可以使用combineLatestzip将其值与其他可观察值组合,或者可能{{1} }或map根据输入Observables的值创建新的Observable。