0

我每 10 秒使用 Observable.timer(0,10000) 调用一个 API,并取消订阅 ngOnDestroy() 方法。但是这个调用并没有停止,它不断地添加到队列中,即使在离开该组件后也调用。

我试图破坏ngOnDestroy()功能上的组件。但它仍然是它的接听电话。

它应该只在这个组件上调用,并且应该每 10 秒调用一次,但是如果我们去其他组件调用被添加到队列中并且一旦返回到实例组件,它每 10 秒调用多次。

代码:

this._instanceSub = Observable.timer(0,reference.INSTANCE_CALL_INTERVAL) .subscribe(() => { this.getComonentInstance(this.componentId); }); ngOnDestroy() { 
if (this._instanceSub) { 
    this._instanceSub.unsubscribe(); 
} 
4

1 回答 1

0

上面的代码必须工作我已经使用下面的代码相同

this.subject = new Subject();

ngOnInit() {
  timer(0, reference.INSTANCE_CALL_INTERVAL).pipe(
    takeUntil(this.subject),
  ).subscribe(t => this.getComonentInstance(this.componentId));
}

在 ngOndestroy 中

ngOnDestroy() {
  this.subject.next();
}
于 2019-07-25T10:18:57.090 回答