nks*_*nks 6 timer observable angular
听说我正在迭代数组,我想每 2 秒运行一次这个循环。
let Array = [1,2,3,4,5,6]
for (i = 0; i < Array.length; i++) {
setTimeout((item)=>{
//business logic
console.log("item", item);
}, 2000 * i, Array[i]);
}
Run Code Online (Sandbox Code Playgroud)
如何在 observable.timer 方法中转换此代码?
这应该有效:
let Array = [1,2,3,4,5,6]
rxjs.interval(2000)
.pipe(
rxjs.operators.take(Array.length),
rxjs.operators.map(i => Array[i])
).subscribe(value => console.log(value));Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.3.3/rxjs.umd.min.js"></script>Run Code Online (Sandbox Code Playgroud)
它自动在Array.lengthitems ( take)之后结束,并产生 subscribe ( map) 中的项目而不是它们的索引。
RxJS v5 版本:
let Array = [1,2,3,4,5,6]
Rx.Observable.interval(2000)
.take(Array.length)
.map(i => Array[i])
.subscribe(value => console.log(value));Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.12/Rx.min.js"></script>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3619 次 |
| 最近记录: |