gpt4 book ai didi

rxjs - Rx.Subject 是一个热门的 observable 吗?

转载 作者:行者123 更新时间:2023-12-02 11:26:17 25 4
gpt4 key购买 nike

编码

const a = new Rx.Subject().do(x => console.log('a'))
const b = a.mapTo(0)
const c = a.mapTo(1)
const d = Rx.Observable.merge(b, c)
d.subscribe(x => console.log('d'))
a.next(3)

和输出
a
d
a
d

为什么 a 打印了两次? Rx.Subject 不是一个热门的 observable 吗?

最佳答案

Subject本身是热的/共享的。

但是:您附加的任何(大多数!)运算符都将创建一个新流,并将前一个流(在本例中为 Subject )作为源 - 但是,新流(对于大多数运算符)不是热的,只会被制作通过附加热运算符(如 sharepublish 等...)

所以当你share您的 do ,一切都应该按预期工作。

const a = new Rx.Subject().do(x => console.log('a')).share();
const b = a.mapTo(0);
const c = a.mapTo(1);
const d = Rx.Observable.merge(b, c)
d.subscribe(x => console.log('d'));
a.next(3);
<script src="https://unpkg.com/rxjs/bundles/Rx.min.js"></script>

关于rxjs - Rx.Subject 是一个热门的 observable 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42434732/

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