鍍金池/ 問答/HTML/ javascript 中 setInterval()這個這個函數(shù)我們?nèi)〔坏剿祷?/span>

javascript 中 setInterval()這個這個函數(shù)我們?nèi)〔坏剿祷氐闹担俏覀冞€想將他去掉,那么怎么去呢

var I = setInterval() 這個函數(shù)我們在調(diào)用他的時候 返回一個I 是他的id
當這個方法封裝到某個某塊里面我們?nèi)〔坏竭@個 I 那么我們有辦法清除這個定時器嗎
如果沒辦法單獨清楚這個 setInterval 有辦法將當前所有的 setInterval 定時器清除嗎。

回答
編輯回答
扯機薄

1:封裝的時候你可以將定時器id作為返回值的一部分,然后通過clearInterval清除
2:封裝里面加上清除的操作的方法

2018年9月1日 11:54
編輯回答
焚音

因為之前寫的setInterval 用 clearInterval清除時,setInterval返回的timeout會丟失。我在做的時候把setInterval返回的timeout push到arr數(shù)組里面,每次重新調(diào)用setInterval之前判斷arr.length是否大于零,大于零循環(huán)遍歷調(diào)用clearInterval清除定時器。

2018年2月22日 18:50
編輯回答
浪蕩不羈

在你的模塊里增加一個方法用于清除定時器,在模塊外部可以調(diào)用

function destory(){
    //...清除所有Interval
}
2018年2月26日 23:52
編輯回答
陌顏

建議自己封裝一個mySetInterval,方便操作

function mySetInterval(func, delay) {
   const id = setInterval(func, delay);
   return () => clearInterval(id);
}
const cancel = mySetInterval(func, delay);
cancel();
2017年4月1日 16:12
編輯回答
真難過

那你封裝個clearInterval方法到相同的地方,要清除的時候調(diào)用一下就好了。

2018年5月7日 22:58
編輯回答
別逞強
function timer() {
  var timeout;
  ...
  var timered = function(){
    timeout = setInterval(function() {
      ...
    })
  }
  timered.cancel = function() {
    clearInterval(timeout)
    timeout = null
  }
  return timered
}
2017年11月18日 18:14