有一个参数的函数的clearTimeout

时间:2014-06-20 20:18:20

标签: javascript setinterval clearinterval

我正在编写一个可以同时打开许多聊天窗口的聊天应用程序。每次打开一个窗口时,我都会在我的函数update_chat()上调用setInterval,它会更新单个聊天窗口。我将chat_id传递给update_chat()

setInterval("update_chat("+chat_id+")",4000);

chat_id只是聊天的ID。所以我可以让函数update_chat在不同的时间间隔上运行多次,具体取决于打开的聊天次数。开始聊天工作正常。

我的主要问题是如何停止上述间隔。我不想停止所有间隔,只是与特定聊天相关联的间隔。我试过这个

clearInterval("update_chat("+chat_id+")");

但它没有做任何事情。


我试过

var chat_intervals=[]

chat_intervals[chat_id]=setInterval("update_chat("+chat_id+")",4000);

clearInterval(chat_intervals[end_id]);

它没有停止间隔

1 个答案:

答案 0 :(得分:4)

clearIntervaldocs)将间隔ID作为参数来知道要清除的间隔。 setIntervaldocs)在调用时会返回间隔ID,因此您可以将其存储在var中,并在需要清除时将其传递给clearInterval

//start the interval, store its ID
var interval_id = setInterval( function () { /* do something*/ }, 1000);

//clear the interval
clearInterval(interval_id);

请注意,setTimeoutdocs)和clearTimeoutdocs)以相同的方式相互协作。

另请注意,虽然setInterval可以将字符串参数作为要运行的函数,但它也可以采用实际函数(这是非常优选的)。因此,您的代码可以更好地编写为:

var update_chat_interval = setInterval(function () {
    update_chat(chat_id);
}, 4000);

// to clear it later:
clearInterval(update_chat_interval);