Single 是RxJava中Observable的一个变种;点击 [官方链接](http://reactivex.io/documentation/single.html)
特点:
总是只发送一个数据值或者发送一个错误;发送完后就会终止订阅关系。
使用说明:
订阅Single Observable 主要需要实现onSuccess ,OnError两个方法;他只会调用这两个方法中的其中一个,调用后订阅关系就会终止。
操作符:
Single可以组合使用多种操作,一些操作符让你可以混合使用Observable 和 Single。详细操作符及其说明如下:
操作符 | 返回值 | 说明 |
---|---|---|
compose | Single | 创建一个自定义的操作符 |
concat and concatWith | Observable | 连接多个Single和Observable发射的数据 |
create | Single | 调用观察者的create方法创建一个Single |
error | Single | 返回一个立即给订阅者发射错误通知的Single |
flatMap | Single | 返回一个Single,它发射对原Single的数据执行flatMap操作后的结果 |
flatMapObservable | Observable | 返回一个Observable,它发射对原Single的数据执行flatMap操作后的结果 |
from | Single | 将Future转换成Single |
just | Single | 返回一个发射一个指定值的Single |
map | Single | 返回一个Single,它发射对原Single的数据执行map操作后的结果 |
merge | Single | 将一个Single(它发射的数据是另一个Single,假设为B)转换成另一个Single(它发射来自另一个Single(B)的数据) |
merge and mergeWith | Observable | 合并发射来自多个Single的数据 |
observeOn | Single | 指示Single在指定的调度程序上调用订阅者的方法 |
onErrorReturn | Single | 将一个发射错误通知的Single转换成一个发射指定数据项的Single |
subscribeOn | Single | 指示Single在指定的调度程序上执行操作 |
timeout | Single | 它给原有的Single添加超时控制,如果超时了就发射一个错误通知 |
toSingle | Single | 将一个发射单个值的Observable转换为一个Single |
zip and zipWith | Single | 将多个Single转换为一个,后者发射的数据是对前者应用一个函数后的结果 |
示例:
Single.create(new SingleOnSubscribe<String>() {
@Override
public void subscribe(SingleEmitter<String> e) throws Exception {
e.onSuccess("hello, single text one");
e.onSuccess("hello, single text two");
e.onSuccess("hello, single text three");
}
})
.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onSuccess(String value) {
textView.setText(value);
}
@Override
public void onError(Throwable e) {
}
});
总结:
1、Single适合执行相对独立的单次任务;
2、Single 发送的要不是成功,要不是失败,仅有两种情况 ;
3、Single的执行完一次发射任务后,后续任务不再执行。
网友评论