gpt4 book ai didi

RxJS:完成时与单个发射合并

转载 作者:行者123 更新时间:2023-12-04 09:33:40 27 4
gpt4 key购买 nike

是否有 RxJS 工厂函数(或更普遍的模式)将多个其他函数合并在一起,但仅在所有函数完成时发出一次

我想要这个的用例是等待几个并行操作,然后在它们完成后做其他事情。对于 promise ,这​​可以像这样完成:

Promise.all(A, B, C).then(() => console.log('done'));

对于 observables,我想到的最好的是

merge(A, B, C).pipe(takeLatest(1)).subscribe(() => console.log('done'));

不过,这并未说明 ABC 为空。而且它不会为订户提供确定性的值(value)。没有针对此用例的简单内置解决方案吗?

最佳答案

您可以使用 forkJoin .一旦所有给定的可观察对象完成,此运算符就会发出。

const { Observable, of, forkJoin } = rxjs;

const obs1$ = new Observable(subscriber => {
subscriber.next('obs1$ - value 1');
subscriber.next('obs1$ - value 2');
subscriber.complete();
})
const obs2$ = of('obs2$');
const obs3$ = of('obs3$');

const result$ = forkJoin(
obs1$,
obs2$,
obs3$
);

result$.subscribe(v => console.log(v));
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.3/rxjs.umd.min.js"></script>

关于RxJS:完成时与单个发射合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62697042/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com