首页 > 解决方案 > 在定时器 rxjs 结束时调用函数

问题描述

嗨,我想在 rxjs 中完成的计时器结束时调用该函数。

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

上面的代码可以工作,但是我如何定义一个在计时器到期后应该调用的函数。

我尝试了tap方法,但它不起作用

标签: angularrxjs

解决方案


使用finalize,takeWile将在条件匹配并触发时完成 observablefinalize

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

推荐阅读