Javascript 取消订阅,当两个观测值相互订阅时
我有两个不完整的观察对象(它们是事件处理程序)。每次可观测A发射时,我想丢弃B的所有发射,等待B发射一个值,并对A的发射做一些处理;忽略更多的B排放。如果A在等待B时再次发射,我想取消等待 目前我有以下代码:Javascript 取消订阅,当两个观测值相互订阅时,javascript,angular,rxjs,observable,Javascript,Angular,Rxjs,Observable,我有两个不完整的观察对象(它们是事件处理程序)。每次可观测A发射时,我想丢弃B的所有发射,等待B发射一个值,并对A的发射做一些处理;忽略更多的B排放。如果A在等待B时再次发射,我想取消等待 目前我有以下代码: obsA$.subscribe(value => { obsB$.pipe(take(1)).subscribe(_ => { if (value) { // do stuff with value } }); }); 这不包括以下情况
obsA$.subscribe(value => {
obsB$.pipe(take(1)).subscribe(_ => {
if (value) {
// do stuff with value
}
});
});
这不包括以下情况:A发射一次,然后A再次发射,然后B发射一个值,应取消对B的第一次订阅,并且仅应执行第二次订阅
我应该如何处理这个问题?有没有更好/更清晰的方法来写这个?
ObserveA是一个导航事件(导航到一个新地址),而ObsB来自一个动画事件,它发生在导航之后。当导航到一个新地址时,我想等待动画完成,然后做一些事情。看起来您描述的是,始终订阅从其回调返回的可观察对象,并取消订阅上一个
obsA$
.pipe(
switchMap(v => obsB$.pipe(mapTo(v))), // pass through only the original emission from obsA$
)
.subscribe(resultFromA => ...);
看起来您正在描述的是,始终订阅从其回调返回的可观察对象,并取消订阅上一个
obsA$
.pipe(
switchMap(v => obsB$.pipe(mapTo(v))), // pass through only the original emission from obsA$
)
.subscribe(resultFromA => ...);
这是我想到的第一个接线员。不知道为什么我会被卡住,泰!这是我想到的第一个接线员。不知道为什么我会被卡住,泰!