#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 или отрицательное значение