我正在使用 RxViz 来模拟每 1 秒出现一次的不同动作。当我尝试
Rx.Observable.create(obs => {
obs.next([1, 2, 3]); // or could be ['aaa', 'bbbb', 'ccc']
obs.complete();
}).delay(1000);
Run Code Online (Sandbox Code Playgroud)
或者我自己使用 console.log
它一直同时显示三个数字 1, 2, 3
有一篇关于同样问题的帖子,但没有一个答案对我有用。我正在使用 Rx 最新版本 6
[编辑] 数组可以包含任何东西,如数字、字符串或任何对象
siv*_*636 13
如果您想延迟每个值(例如延迟 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));
}
Run Code Online (Sandbox Code Playgroud)
这里我没有修改你创建的 observable 的内部结构。相反,我只是采用您的 observable 并应用适当的操作来实现您的期望。
Kri*_*obs 11
这是我的解决方案(非常干净)
const fakeData = [1,2,3]
loadData$() {
return from(fakeData).pipe(
concatMap(item => of(item).pipe(
delay(1000)
)),
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5152 次 |
| 最近记录: |