首页 > 解决方案 > 在 takeUntil 之后调用 lastvalue

问题描述

我有一个服务调用,我正在检查它是否每 5 秒返回一次 true 或 false。

notifier(){
   return Rx.Observable.of(true) // based on some condition       
}

executeAnotherApiCall(){

}

const interval = Rx.Observable.interval(5000)


interval
  .takeUntil(() => this.notifier())
  .map((x) => this.executeAnotherApiCall())

问题是 executeAnotherApiCall 从未被调用,它直接调用方法 subscribe 方法。

有没有办法在takeUntil()返回 true 后执行另一个方法/函数。

标签: javascriptrxjsobservable

解决方案


timer(2000)它会在 2 秒后发出 0,然后完成。TakeUntil 等待何时this.notifier()完成并停止发出值。您的间隔在 5 秒后发出第一个值,因此这种情况永远不会发生,因为 takeUntil 将停止发出值。

当您更改参数时,例如:

const interval = Rx.Observable.interval(1000)
const notifier = Rx.Observable.timer(2000)

在这种情况下,您的 executeAnotherApiCall() 方法将运行一次。


推荐阅读