RxJS发送订阅两次
我有一个RXJS函数,它将创建一个空的可观察对象,点击结果并返回新的可观察对象。我希望observable始终运行tap,以便我不订阅(在实际情况下,它可能永远不会被订阅)RxJS发送订阅两次,rxjs,Rxjs,我有一个RXJS函数,它将创建一个空的可观察对象,点击结果并返回新的可观察对象。我希望observable始终运行tap,以便我不订阅(在实际情况下,它可能永远不会被订阅) 函数{ 设obs=of({}); obs=obs.pipe(点击(()=>console.log('here')) obs.subscribe(); 返回obs; } const res=that(); res.subscribe(()=>console.log('finished')) 如果在上运行此代码,您将注意到这里
函数{
设obs=of({});
obs=obs.pipe(点击(()=>console.log('here'))
obs.subscribe();
返回obs;
}
const res=that();
res.subscribe(()=>console.log('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
请参阅更新的。这只是只点击内部订阅的情况吗
function that() {
let obs = of({});
obs.pipe(tap(() => console.log('here'))).subscribe();
return obs;
}
const res = that();
res.subscribe(() => console.log('finished'))
是的,我想了很多。我如何使它不这样做,仍然订阅两次?这是一个非常简单的情况,在真实的情况下,我必须noop订阅,以确保tap始终运行。