gpt4 book ai didi

rx-java - 为什么在 replay() 之前调用publish()很重要

转载 作者:行者123 更新时间:2023-12-02 16:14:33 26 4
gpt4 key购买 nike

我读过很多关于publish()和replay()的rx例子。在所有教程中,他们都说在调用 replay() 之前调用publish() 很重要。为什么会这样呢?如果您调用 replay() 而从不调用publish() 会发生什么?看起来 replay() 运算符会订阅源可观察对象并开始缓存。然后任何人都会得到相同的、完整的数据流。我可以看到publish()改变游戏的唯一原因是它会延迟对源可观察对象的订阅,直到调用connect()为止。这是正确的吗?

最佳答案

您通常应用其中之一,但不能同时应用两者,因为 publish().replay()与普通 replay() 没有实际区别和replay().publish()这只是让迟到的消费者看不到整个序列的一个秘诀。

In all tutorials, they say it's important to call publish() before calling replay().

这绝对是错误的,你到底在哪里读到的?

Is this right?

两个运算符都返回 ConnectableObservable你必须调用connect在这两种情况下启动序列。在这两种情况下,您都应该在调用 connect 或使用 autoConnect(n) 之前让消费者做好准备。在 n 之后开始序列消费者。

publish之间的区别和replay后者会缓存部分或全部项目并将其重播给消费者,无论他们何时订阅。前者不保留任何项目,甚至不保留最新的项目,如 BehaviorSubject ,并将该项目发送给当时订阅该项目的消费者。

关于rx-java - 为什么在 replay() 之前调用publish()很重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46009208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com