RxJava start 和 create 有什么区别?

RxJava what is the difference between start and create?

我正在看这两个操作员,它们似乎在做同样的工作:

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

create只是新版本的start吗?因为我也无法在较新版本的 RxJava 中的任何地方找到启动方法。

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


这个问题有tag所以我只讲这个语言实现。其他语言可能有不同的约定、封装、命名等。


创建

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

您会注意到传递的类型是 OnSubscribe,它在 订阅时被调用。所以除非你传递的类型是活跃的(一个线程发出东西,或者代码被插入到一些活跃的源,比如网络),直到有订阅者才会完成任何实际工作。

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

工件来源⇨https://github.com/ReactiveX/RxJava

开始

Async.start 也创建了一个可观察对象,但存在显着差异,无论任何订阅如何,都会立即调用 Function 并生成单个项目。如果发生多个订阅,也将重复使用生产的项目。最后该函数将在计算调度程序上执行。

工件来源⇨https://github.com/ReactiveX/RxJavaAsyncUtil