rxjs - 使用 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)
);
解决方案
尝试Promise.all
from(Promise.all(p1, p2)).pipe(map(() => value))
或者只是使用forkJoin
而不是 concat
推荐阅读
- git - Android Studio 中的 Accept Yours、Accept Theys 和 Merge in GitHub 有什么不同?
- javascript - 如何手动删除 Firebase Firestore 侦听器?
- html - 每行设置一张卡 Bootstrap 4
- python - python代码的输出是每行一个字符
- java - 为春季计划作业添加@PreAuthorize 角色
- scala - 如何将 scala 类作为对象传递给函数参数?
- r - 如何在 ggplot boxplot 中仅抖动异常值?
- sql - 我应该使用什么作为 SQL Server 中 json 列的默认值?
- javascript - webrtc 音频设备断开和重新连接
- java - 我正在尝试生成列表列表以返回帕斯卡三角形