gpt4 book ai didi

RxJS 发射订阅两次

转载 作者:行者123 更新时间:2023-12-05 07:35:33 31 4
gpt4 key购买 nike

我有一个 RXJS 函数,它将创建一个空的 Observable,利用结果并返回新的 Observable。我希望 observable 始终运行 tap,所以我没有订阅(在实际情况下,它可能永远不会被订阅)。

function that() {
let obs = of({});
obs = obs.pipe(tap(() => console.log('here')))
obs.subscribe();
return obs;
}

const res = that();
res.subscribe(() => console.log('finished'))

如果您在 StackBlitz 上运行此代码,您会注意到 here 被触发了两次。输出如下所示:

 here
here
finished

我尝试了几种不同的方法,但我似乎永远无法让它在不发出两次的情况下工作。

最佳答案

您订阅了两次:

function that() {
let obs = of({});
obs = obs.pipe(tap(() => console.log('here')))
obs.subscribe(); // first subscription
return obs;
}

const res = that();
res.subscribe(() => console.log('finished')) // second subscription

这与您订阅的同一个可观察对象,一次在函数中,然后在返回值中。

只是不要在函数中订阅

function that() {
let obs = of({});
obs = obs.pipe(tap(() => console.log('here')))
return obs;
}

const res = that();
res.subscribe(() => console.log('finished')) // subscribe from here only

查看更新的 StackBlitz .

关于RxJS 发射订阅两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49502652/

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