angular - 我可以将 setTimeout 方法转换为 observable.timer 吗?

标签 angular timer observable

听说我正在迭代数组,我想每 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]);
    }

如何在 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));
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.3.3/rxjs.umd.min.js"></script>

它在 Array.length 项 (take) 之后自动结束,并在订阅 (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));
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.5.12/Rx.min.js"></script>

关于angular - 我可以将 setTimeout 方法转换为 observable.timer 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54304766/

相关文章:

java - Angular Spring Boot 打包问题 Whitelabel 错误

php - 带 php session 的倒数计时器

angular - 带数组的 SwitchMap 运算符

c# - .NET 的 RX - 从 Disposable.Create 中调用 observer.OnCompleted 时没有任何反应

android - 在 onDoNext 和 doOnCompleted 方法中难以设置 View

javascript - 如何控制或过滤从 rxjs 可观察对象中发出的集合返回的对象数量?

angular - 如何在 Angular2 中向服务器提交表单?

angularjs - 我如何在 Http Observable 上使用 "Interval"或类似的?

javascript - 这个定时器有什么问题[JS]

c# - 定时器结束后的返回值