java rx 中 Observable.defer 和 Observable.create 的区别

新手上路,请多包涵

有人可以解释一下 defercreate 中的方法 Observable 之间的区别吗?我不明白什么时候应该使用 defer 什么时候应该使用 create ..

参考:

推迟: http ://reactivex.io/documentation/operators/defer.html

创建: http ://reactivex.io/documentation/operators/create.html

谢谢

原文由 Xitrum 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

所以区别似乎是: defer 当你已经创建/返回一个可观察的东西时很好,但你不希望这个过程在订阅之前发生。

create 当您需要手动包装一个异步进程并创建一个可观察对象时非常有用。该创建 也被 推迟到订阅。

换一种方式:

defer 是一个运算符,可以延迟组合可观察序列。

create 是可观察序列的自定义实现(创建被推迟到订阅)。

因此,如果您遇到可能使用 just Observable 的情况,或者您有一个返回 Observable 的网络 API 层请求,但您不希望该请求在订阅之前启动。 defer 适用于这些场景。

如果您的网络 API 层 为请求返回 Observable ,但您需要一个 Observable 接口,您可以使用 create 那个 Observable 序列在订阅之前仍然不会被创建。如果您希望无论订阅如何启动网络调用,那么您将使用不同的机制,例如 Subject ,可能会重播。

原文由 Bob Spryn 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题