gpt4 book ai didi

javascript - 为什么在 rx 2.3 中订阅两次 observable 时第二次订阅没有收到任何值?

转载 作者:搜寻专家 更新时间:2023-11-01 04:31:16 24 4
gpt4 key购买 nike

根据 documentation of rxjs,我有这个准系统示例没有像我预期的那样运行.我希望订阅都能收到所有值。

文档提到:

Two observers then subscribe to this sequence and print out its values. You will notice that the sequence is reset for each subscriber, in which the second subscription will restart the sequence from the first value.

let s1 = rx.Observable.from([1, 2, 3, 4, 9, 11])

s1.subscribe(
x => console.log(x),
x => console.log(x),
x => console.log('complete'))

s1.subscribe(
x => console.log(x),
x => console.log(x),
x => console.log('complete'))

然而,第二个订阅只记录“完成”

事实证明,该示例在 rxjs 2.4 中按预期工作,但在 2.3 中却不行。有谁知道发生了什么变化?我无法在 the release notes 中发现它

这是 2.3.20 的 jsfiddle:fiddle

这是 2.4.1 中的一个:fiddle

最佳答案

这对于冷可观察对象来说是不正确的行为。从数组创建的可观察对象是冷可观察对象,并且不能超过一个观察者共享订阅。为了正确的工作,您可以将您的可观察对象转换为热可观察对象。您可以查看此文档http://xgrommx.github.io/rx-book/content/observable/observable_instance_methods/publish.html .在你的情况下,你可以使用这样的东西 http://jsbin.com/mowaco/edit?js,console .现在两个订阅并行工作。

关于javascript - 为什么在 rx 2.3 中订阅两次 observable 时第二次订阅没有收到任何值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29094629/

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