[英]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.