RxJS:完成时与单发射合并

RxJS:完成时与单发射合并,rxjs,Rxjs,是否有一个RxJS工厂函数(或者更一般地说是一个模式)可以将其他几个工厂合并在一起,但只在所有工厂都完成后发出一次 我想要的用例是等待几个并行操作,然后在它们完成后再执行其他操作。对于承诺,可以这样做: Promise.all(A, B, C).then(() => console.log('done')); 对于可观察的,我想到的最好的是 merge(A, B, C).pipe(takeLatest(1)).subscribe(() => console.log('done'))

是否有一个RxJS工厂函数(或者更一般地说是一个模式)可以将其他几个工厂合并在一起,但只在所有工厂都完成后发出一次

我想要的用例是等待几个并行操作,然后在它们完成后再执行其他操作。对于承诺,可以这样做:

Promise.all(A, B, C).then(() => console.log('done'));
对于可观察的,我想到的最好的是

merge(A, B, C).pipe(takeLatest(1)).subscribe(() => console.log('done'));
但这并不能解释
A
B
C
为空。而且它不会为订阅者提供确定性的值。这个用例没有简单的内置解决方案吗?

您可以使用。此操作符在其所有给定的可观察项完成后发出

const{Observable,of,forkJoin}=rxjs;
const obs1$=新的可观察对象(订户=>{
subscriber.next('obs1$-值1');
subscriber.next('obs1$-值2');
subscriber.complete();
})
const obs2$=of('obs2$);
常量obs3$=of('obs3$);
const result$=forkJoin(
obs1元,
obs2元,
obs3$
);
结果$.subscribe(v=>console.log(v))

谢谢
forkJoin
正是我想要的。不过,我不明白为什么要对参数应用
last()
forkJoin
已返回最后发出的元素,不是吗?绝对正确。抱歉-我将更新答案:)