所以我要在这里实现的是仅在combineLatest([subject1$, subject2$])
发出值时才获得source$
的结果。
问题是,无论我使用该订阅的哪个运营商在subject1$
或subject2$
发出值时(这就是switchMap
的工作方式),都会吃午饭。现在,我很难为此找到合适的运算符,我想我正在寻找更多的模式。
const source$ = fromEvent(document, 'click');
const subject1$ = new Subject() // can emit one or more values in unknown time
const subject2$ = new Subject() // can emit one or more values in unknown time
setInterval(() => { subject1$.next(1) }, 1000)
setInterval(() => { subject2$.next('a') }, 2000)
source$
.pipe(
switchMap(() => combineLatest([subject1$, subject2$])), // obviously does not work
)
.subscribe(([subject1, subject2]) => {
console.log(subject1, subject2);
});
非常感谢,
答案 0 :(得分:2)
使用withLatestFrom
source$.pipe(
withLatestFrom(combineLatest([subject1$, subject2$]))
)
.subscribe(([_,[subject1, subject2]]) => {
console.log(subject1, subject2);
})