两种创建Observable的方法(转)

简介:

转自:http://blog.csdn.net/nicolelili1/article/details/52038211

Observable.create()

create()方法使开发者有能力从头开始创建一个Observable。它需要一个OnSubscribe对象,这个对象继承Action1,当观察者订阅我们的Observable时,它作为一个参数传入并执行call()函数。

 

 

Observable通过使用subscriber变量并根据条件调用它的方法来和观察者通信。让我们看一个“现实世界”的例子:

 

 

例子故意写的简单,是因为即便是你第一次见到RxJava的操作,我想让你明白接下来要发生什么。

我们创建一个新的Observable<Integer>,它执行了5个元素的for循环,一个接一个的发射他们,最后完成。

另一方面,我们订阅了Observable,返回一个Subscription
。一旦我们订阅了,我们就开始接受整数,并一个接一个的打印出它们。我们并不知道要接受多少整数。事实上,我们也无需知道是因为我们为每种场景都提供对应的处理操作:
* 如果我们接收到了整数,那么就打印它。
* 如果序列结束,我们就打印一个关闭的序列信息。
* 如果错误发生了,我们就打印一个错误信息。

Observable.from()

在上一个例子中,我们创建了一个整数序列并一个一个的发射它们。假如我们已经有一个列表呢?我们是不是可以不用for循环而也可以一个接一个的发射它们呢?

在下面的例子代码中,我们从一个已有的列表中创建一个Observable序列:

 

 

输出的结果和上面的例子绝对是一样的。

from()创建符可以从一个列表/数组来创建Observable,并一个接一个的从列表/数组中发射出来每一个对象,或者也可以从Java Future类来创建Observable,并发射Future对象的.get()方法返回的结果值。传入Future作为参数时,我们可以指定一个超时的值。Observable将等待来自Future的结果;如果在超时之前仍然没有结果返回,Observable将会触发onError()方法通知观察者有错误发生了。


本文转载自SharkBin博客园博客,原文链接:http://www.cnblogs.com/SharkBin/p/7364266.html如需转载自行联系原作者


相关文章
|
3月前
|
C++ 容器
函数对象包装器function和bind机制
函数对象包装器function和bind机制
28 0
|
C++
【C++】function包装器
【C++】function包装器
52 0
|
8月前
|
存储 编译器 C++
C++ 包装器—function
C++ 包装器—function
|
前端开发
创建一个promise对象
创建一个promise对象
70 0
|
JavaScript 前端开发 算法
RxJS系列06:测试 Observable
RxJS系列06:测试 Observable
117 0
|
前端开发 API 开发工具
MobX 源码解析-observable #86
MobX 源码解析-observable #86
121 0
|
JavaScript 前端开发 定位技术
Observable学习笔记
Observable学习笔记
203 0
Observable学习笔记
|
前端开发 JavaScript API
Rxjs源码解析(一)Observable
学习一个库最好的方法就是看其源码,理解其 api 的调用原理,用起来自然也就很清楚自己到底在干什么了,秉持着此观念,为了更好地理解 rxjs,抽空将其源码看了一遍 本文章不会刻意涉及概念性的东西,主线就是解读源码,并在恰当的时候给出一些小例子,源码基于 rxjs v7.4.0 版本
343 0
Rxjs Observable.pipe 传入多个 operators 的执行逻辑分析
Rxjs Observable.pipe 传入多个 operators 的执行逻辑分析
Rxjs Observable.pipe 传入多个 operators 的执行逻辑分析
一段代码看懂原型对象中的callback
一段代码看懂原型对象中的callback
132 0
一段代码看懂原型对象中的callback