gpt4 book ai didi

javascript - RXJS5 与 Promise.all

转载 作者:行者123 更新时间:2023-11-29 19:15:17 25 4
gpt4 key购买 nike

是否有 Promise.all 的等价物?

let prom1 = doA(); // some promise
let prom2 = doB(); // another promise

// wait for both promises to complete.
Promise.all([prom1, prom2], values => {
// do something;
});

无法从文档中将其拼凑起来,各种文章建议使用 ForkJoin,但无法使其正常工作...

let behaviour1 = new BehaviourSubject(0);
let behaviour2 = new BehaviourSubject(1);
let allObserver = new ForkJoinObservable(behaviour1, behaviour2);

behaviour1.subscribe( () => console.log('i work'));
behaviour2.subscribe( () => console.log('i work'));
allObserver.subscribe( () => console.log('i dont work'));

可能只是切换回理智的 promise 世界。

最佳答案

Rx.Observable 有一个 toArray 函数,可用于复制 Promise.all 行为:它存储流的所有发射值并等待基础流的 onComplete 事件触发。一旦所有底层项目都已发出,结果流将发出单个项目:

// Instead of Promises, we can model our async actions as observables
const operation1$ = Rx.Observable.just(1);
const operation2$ = Rx.Observable.just(2);

// Merge all our async results into a single stream
const result$ = Rx.Observable.merge(operation1$, operation2$)

// Finally, call toArray to combine all results
result$
.toArray()
.subscribe(x => console.log(x));
// >> [1, 2]

关于javascript - RXJS5 与 Promise.all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35847041/

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