Javascript 取消订阅,当两个观测值相互订阅时

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 } }); }); 这不包括以下情况

我有两个不完整的观察对象(它们是事件处理程序)。每次可观测A发射时,我想丢弃B的所有发射,等待B发射一个值,并对A的发射做一些处理;忽略更多的B排放。如果A在等待B时再次发射,我想取消等待

目前我有以下代码:

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 => ...);

这是我想到的第一个接线员。不知道为什么我会被卡住,泰!这是我想到的第一个接线员。不知道为什么我会被卡住,泰!