Отписаться не работает с таймером RXJS с несколькими подписками - PullRequest
0 голосов
/ 07 марта 2019

У меня есть код Angular 7. Я хочу, чтобы показать картинки в определенное время inrerval один за другим.

image1: будет работать от 0 до 5000 секунд

image2: будет работать от 5000 секунд до следующих 3000 секунд после image2 таймер финш; Я откажусь от подписки.

JSON выглядит так:

{
'animations': [{'gifUrl':'abc.gif'}, {'gifUrl':'xyz.gif'}]
}

Подписка vriable объявлена ​​как

animationSubscription: Subscription[] =   [];

Я использовал цикл для итерации по массиву JSON, а затем таймер RXJS для подписки каждого таймера изображения.

for (let i = 0; i < animations.length; i++) {
  this.playAnmiation(animations[i],i);
}

и логика воспроизведения анимации равна

playAnmiation(animation,i){
  this.animationSubscription[i]= timer(0 , 5000).pipe(takeUntil(this.unsubscribe))..subscribe(
  (value: number) => {
    this.imageUrl=animation.gifUrl;
    this.animationSubscription[i].unsubscribe();
  })
}

Он работает правильно, но последняя подписка продолжает работать. Есть ли способ показать изображения по таймеру?

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