首页 > 解决方案 > 使用 Rxjs 构建一个初始化器

问题描述

我有两个需要按顺序执行的承诺。在他们成功完成后,我想发出一个value并希望与所有当前和未来的订阅分享

    concat(
        from(promise1),
        from(promise2)
    ).pipe(
        switchMap(() => of(value))
    ).share()

不起作用,因为值过早地发出。谁能帮忙?

编辑1:

我找到了一个可行的解决方案。有没有更好的方法?

    const initializer = 
        concat(from(promise1), from(promise2))
        .pipe(
            last(),
            switchMap(() => of(value)),
            shareReplay(1)
        );

标签: rxjs

解决方案


尝试Promise.all

from(Promise.all(p1, p2)).pipe(map(() => value))

或者只是使用forkJoin而不是 concat


推荐阅读