Изменить продолжительность тайм-аута - PullRequest
0 голосов
/ 16 мая 2018

Я создаю приложение Angular 6, в котором у меня есть несколько элементов, и каждый элемент имеет некоторую конфигурацию. Для каждого элемента я определил продолжительность, в течение которой этот элемент должен быть видимым.

Я создал это, но мне интересно, можно ли это написать в 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 голосов
/ 16 мая 2018

С 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...