我正在编写一个可以同时打开许多聊天窗口的聊天应用程序。每次打开一个窗口时,我都会在我的函数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]);
它没有停止间隔
答案 0 :(得分:4)
clearInterval
(docs)将间隔ID作为参数来知道要清除的间隔。 setInterval
(docs)在调用时会返回间隔ID,因此您可以将其存储在var中,并在需要清除时将其传递给clearInterval
。
//start the interval, store its ID
var interval_id = setInterval( function () { /* do something*/ }, 1000);
//clear the interval
clearInterval(interval_id);
请注意,setTimeout
(docs)和clearTimeout
(docs)以相同的方式相互协作。
另请注意,虽然setInterval
可以将字符串参数作为要运行的函数,但它也可以采用实际函数(这是非常优选的)。因此,您的代码可以更好地编写为:
var update_chat_interval = setInterval(function () {
update_chat(chat_id);
}, 4000);
// to clear it later:
clearInterval(update_chat_interval);