rxjs - 使用 RXJS 延迟每个元素
问题描述
我正在使用 RxViz 来模拟每 1 秒出现的不同动作。当我尝试
Rx.Observable.create(obs => {
obs.next([1, 2, 3]); // or could be ['aaa', 'bbbb', 'ccc']
obs.complete();
}).delay(1000);
或者我自己使用 console.log
它一直同时显示三个数字1、2、3
有一篇关于同样问题的帖子,但没有一个答案对我有用。我正在使用 Rx 最新版本 6
[编辑] 数组可以包含任何东西,如数字、字符串或任何对象
解决方案
如果您想延迟每个值(例如延迟 1 秒),您可以执行以下操作:
Rx.Observable.create(obs => {
obs.next([1, 2, 3]);
obs.complete();
})
.pipe(
// make observable to emit each element of the array (not the whole array)
mergeMap((x: [any]) => from(x)),
// delay each element by 1 sec
concatMap(x => of(x).pipe(delay(1000)))
)
.subscribe(x => console.log(x));
}
这里我没有修改你创建的 observable 的内部结构。相反,我只是采用您的可观察对象并应用适当的操作来实现您似乎期望的结果。
推荐阅读
- python - 将系列广播到 DataFrame
- python-3.x - 当通过循环从文本文件列表制作多线图时,如何使用python循环为每条线/曲线制作图例?
- python - Kivy Pi 中的自定义退出代码
- javascript - Testcafe:期望变量显示 Object 对象或 NaN
- php - Wordpress WP_Query 结果数组
- python-3.x - 如何将字典集中的值相乘
- r - r 中每一行的调整平均值
- ruby - 如何在不向控制台触发 400 (Bad Request) 消息的情况下使用 axios
- javascript - Uncaught (in promise) ReferenceError: $0 is not defined
- java - 我如何为甲板类 toString 方法编写函数