美文网首页
RxJava学习笔记之Single

RxJava学习笔记之Single

作者: 初夏的雪 | 来源:发表于2020-06-02 15:41 被阅读0次
    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的执行完一次发射任务后,后续任务不再执行。

相关文章

网友评论

      本文标题:RxJava学习笔记之Single

      本文链接:https://www.haomeiwen.com/subject/sdiuzhtx.html