2 回答

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
setInterval由 JavaScript 的運(yùn)行時(shí)調(diào)度。當(dāng)您取消訂閱名為setIntervalno-one的 Observable 時(shí),會(huì)告訴運(yùn)行時(shí)取消計(jì)劃的操作。您可能實(shí)際上希望在某些用例中保持間隔運(yùn)行。
因此,您必須clearInterval在從Observable的回調(diào)返回的取消訂閱時(shí)調(diào)用自己:
const source$ = new Observable(observer => {
const handler = setInterval(...);
...
return () => clearInterval(handler);
});

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊
setInterval不依賴于您的 observable,它將繼續(xù)運(yùn)行,直到您使用該clearInterval()函數(shù)清除它為止。要清除間隔,您必須使用返回的intervalID(從 返回setInterval())。
例子:
// Assigning an intervalID to a variable
const intervalID = setInterval(() => {
// Do some stuff here...
}, 2000);
// Clearing an interval
clearInterval(intervalID);
添加回答
舉報(bào)