RxJava启动和创建有什么区别?

时间:2015-07-17 19:52:38

标签: rx-java

我正在关注那两个似乎做同样工作的运营商:

http://reactivex.io/documentation/operators/start.html http://reactivex.io/documentation/operators/create.html

是否只创建较新版本的start?因为我也无法在较新版本的RxJava中找到启动方法。

1 个答案:

答案 0 :(得分:1)

这是两个不同的运算符,它们也有不同的工件。

此问题已标记为 ,因此我只讨论此语言实现。其他语言可能有不同的约定,包装,命名等。

创建

Observable.create确实是提供创建可观察对象的方法。

您会注意到,传递的类型为OnSubscribe,在订阅时称为。所以除非你传递的类型是活动的(一个发送内容的线程,或者代码被插入某些活动源,如网络),在订阅者之前不会做任何实际的工作。

在est 中,根据创建observable的方式,它可能会或可能不会生成相同的项目,它可能会以不确定的速度生成一个,多个或没有项目。

神器来源⇨https://github.com/ReactiveX/RxJava

启动

Async.start也创建了一个observable,但是有明显的差异,无论是否订阅都会立即调用Function,并生成一个项目。如果发生多个订阅,也将重新使用生成的项目。最后,该函数将在计算调度程序上执行。

神器来源⇨https://github.com/ReactiveX/RxJavaAsyncUtil