[英]Angular rxjs interval not subscribing
我有这段代码:
interval(180000).pipe(takeUntil(this._unsub$)).subscribe(() => myFunc())
_unsub$ 是在 ngOnDestroy 方法中触发的主题。 我的问题是 myFunc 永远不会被执行。
另一个组件中的同一段代码可以工作。 我不明白为什么。
timer(0, 180000).pipe(takeUntil(this._unsub$)).subscribe(() => myFunc())
作品。 我的计时器问题是,即使我打电话,有时也会调用 function
ngOnDestroy() {
this._unsub$.next();
this._unsub$.complete();
}
任何猜测为什么会发生这种情况?
间隔和计时器都是冷可观察对象,可观察对象是惰性的(与承诺不同),因此在您订阅之前不会调用您的计时器,并且在您订阅时会创建一个新计时器。
这两个设置是相同的:
const firstFunc = () => ...
const secondFunc = () => ...
const interval1$ = interval(180000).pipe(takeUntil(this._unsub$));
const interval2$ = interval(180000).pipe(takeUntil(this._unsub$));
interval1$.subscribe(firstFunc);
interval2$.subscribe(secondFunc);
const firstFunc = () => ...
const secondFunc = () => ...
const interval$ = interval(180000).pipe(takeUntil(this._unsub$));
interval$.subscribe(firstFunc);
interval$.subscribe(secondFunc);
所以你必须考虑何时.subscribe
。 这是我解释不同组件中非常相似的代码之间差异的最佳猜测。 如果this._unsub$.next();
在订阅你的定时器之前被调用,然后 180 秒后,定时器仍然会触发,因为它从未收到_unsub$
信号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.