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

标签 java reactivex

谁能解释一下Observabledefercreate方法的区别?我不明白什么时候应该使用 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)来,您可以使用 createObservable 序列在订阅之前仍然不会被创建。如果您希望无论订阅如何都启动该网络调用,那么您将使用不同的机制,例如 Subject,可能会重播。

关于java - java rx 中 Observable.defer 和 Observable.create 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36313946/

相关文章:

rxjs - 在 RxJS 中包装运算符,以便它可以应用于物化流

java - Java 7 try-with-resources 的 Clover 检测后编译失败

java - 如何重新排序链接列表?

caching - 在 Angular2 中使用 RxJs 5 为 REST 客户端提供基于时间的缓存

rx-java - 惰性随机生成器可观察

java - 在 Java 6 中创建没有 lambda 表达式的 ReactiveX observable

java - 使用 Java 更改 Maven 依赖项版本

java - 手动编写命题逻辑解析器

java - 如何检查十六进制字符串中是否设置了位?

functional-programming - 创建一个通过过滤器的连续值流