функция вызова в конце таймера rxjs

#angular #rxjs

Вопрос:

Привет, я хочу вызвать функцию в конце таймера, завершенного в rxjs.

 this.timer$ = timer(1000, 1000).pipe(
  scan(acc => acc = acc - 1000, milliseconds),
  takeWhile(x => x >= 0),
  tap(() => {
    console.log('function finished')
  })
)
 

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

Я пробовал использовать tap метод, но он не работает

Комментарии:

1. Где вы видели tap , чтобы вас осуждали?

2. nimb.ws/YVsb2Q показывает что-то, но когда написал все заявление, оно исчезло. Моя ошибка. Я улучшил вопрос

Ответ №1:

Используйте finalize , takeWile завершит наблюдаемое, когда условие совпадет и сработает finalize

 this.timer$ = timer(1000, 1000).pipe(
  scan(acc => acc = acc - 1000, milliseconds),
  takeWhile(x => x >= 0),
  finalize(() => {
    console.log('function finished')
  })
)
 

Ответ №2:

 timer(1000,2000).pipe(take(4)).subscribe(console.log)
 

Ты сказал take

Комментарии:

1. что здесь 4 ?, я хочу вызвать функцию, когда таймер получает 0 или отрицательное значение