gpt4 book ai didi

javascript - rxjs 冷 obs 存储所有消息

转载 作者:行者123 更新时间:2023-12-03 07:45:25 26 4
gpt4 key购买 nike

阅读时 an intro to rxjs我读了以下内容并有点担心

the second subscription will restart the sequence from the first value.

它是如何从第一个值开始的?它是否将所有值存储在内存中?这对我来说可能是一个真正的问题,因为我在将保持运行的工作人员/服务中使用它。因此,如果它捕获了它们,那么我就会遭受巨大的打击。

最佳答案

标准订阅不缓冲任何值。一些运算符(和主体)确实需要缓冲一些值来实现其行为(并且该缓冲区可以是无界的),但这是一个与热与冷二分法不同的问题。

简单的解释是,(冷)源可观察对象(最上游的可观察对象)知道如何生成其值,但只有在有订阅者时才会这样做。他为所有订阅者生成相同的值。所以没有缓冲,更像是值的再生。例如,Rx.Observable.range(1,10) 知道它必须生成哪些值,并在有订阅者时随时生成它们。它不会在内存中保留 1,2,3...10 的缓冲区,只保留 110 并在两者之间迭代以生成值(value)。对于大多数冷可观察量来说也是如此,它们有一个与之关联的值生成函数,并且该函数会为每个订阅者重新执行。

如果您想切换到可观察量的行为,即它们在接收/生成值后立即将其值推送给接收/生成时的所有现有订阅者,则必须将冷可观察量转换为热可观察量一个。

有关更深入的解释,请查看 illustrated subscription and data flows对应于热和冷的可观测值。

关于javascript - rxjs 冷 obs 存储所有消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35229234/

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