谁能解释一下Observable
中defer
和create
方法的区别?我不明白什么时候应该使用 defer
以及什么时候应该使用 create
..
引用:
延迟:http://reactivex.io/documentation/operators/defer.html
创建:http://reactivex.io/documentation/operators/create.html
谢谢
最佳答案
所以区别似乎是:defer
当你有一些东西已经创建/返回一个 observable 时很好,但你不希望这个过程在订阅之前发生。
create
在您需要手动包装异步进程并创建可观察对象时非常有用。该创建也推迟到订阅。
换一种说法:
defer
是一个可以延迟组合可观察序列的运算符。
create
是可观察序列的自定义实现(创建延迟到订阅)。
因此,如果您有可能使用 just
从某些结果/值创建 Observable
的情况,或者您有一个返回 的网络 API 层请求的可观察
,但您不希望该请求在订阅之前启动。 defer
适用于这些场景。
如果您有一个不为请求返回 Observable
的网络 API 层,但您需要一个 Observable
接口(interface)来,您可以使用 create
。 Observable
序列在订阅之前仍然不会被创建。如果您希望无论订阅如何都启动该网络调用,那么您将使用不同的机制,例如 Subject
,可能会重播。
关于java - java rx 中 Observable.defer 和 Observable.create 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36313946/