创建一个接受参数的 Observable
Create an Observable that would accept arguments
创建能够接受参数的 Observable
的正确方法是什么?
例如,我可以参数化 http 请求
你可以使用 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,您可以使用 combineLatest
或 zip
将它们的值与您的其他 observable 组合,或者可能 map
或 flatMap
根据输入的 Observables 的值创建新的 Observables。
创建能够接受参数的 Observable
的正确方法是什么?
例如,我可以参数化 http 请求
你可以使用 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,您可以使用 combineLatest
或 zip
将它们的值与您的其他 observable 组合,或者可能 map
或 flatMap
根据输入的 Observables 的值创建新的 Observables。