我正在构建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);
答案 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);