我有一个以takeUntil结尾的管道,问题是switchMap
被触发,因为combineLatest
直到tap
内的takeUntil
才被取消。 / p>
我的伪代码:
combineLatest(
fromEventPattern(handler => {
document.addEventListener('disconnect', handler, false);
console.log('added');
},
handler => {
document.removeEventListener('disconnect', handler, false);
console.log('removed');
}
).pipe(
switchMap(() => {
console.log('SWITCH MAP TRIGGERED!');
return EMPTY;
]),
takeUntil(
mySubject.pipe(
filter(type => type === 'LOGOUT'),
tap(() => console.log('got logout, so do logout calls'),
tap(() => document.dispatchEvent(new CustomEvent('disconnect')))
)
)
)
通过以下方式触发取消操作:
mySubject.next({ type: 'LOGOUT' });
我遇到的问题是,直到tap
中的takeUntil
秒之后才删除事件监听器。因此,"disconnect"
事件的分派正在触发switchMap
再次触发。我希望事情在filter
中的takeUntil
被取消时立即取消,然后它应该执行dispatchEvent('disconnect')
的最终动作。