更改超时持续时间

时间:2018-05-16 13:49:29

标签: javascript angular typescript rxjs

我正在构建Angular 6 app,我有多个项目,每个项目都有一些配置。在每个项目上,我定义了此项目必须显示的持续时间。

我创建了这个,但我感兴趣的是,如果这可以用rxjs编写,或者如果有更简单的解决方案。

const timer = () => {
    this.counter++;
    this.currentItem = this.items[this.counter % this.items.length];
    setTimeout(timer, this.currentItem.duration);
};
setTimeout(timer, this.currentItem.duration);

1 个答案:

答案 0 :(得分:1)

使用RxJS 6你可以做这样的事情

from(items)
  .pipe(
    concatMap(item => of(null) // Wait until the previous inner observable completes
     .pipe(
       delay(item.duration), // Delay emission after this value
       ignoreElements(),
       startWith(item),
     )
    ),
    repeat(),
  )
  .subscribe(console.log);

查看现场演示:https://stackblitz.com/edit/rxjs6-demo?file=index.ts