js中如何移除定时器

JavaScript014

js中如何移除定时器,第1张

js中两种定时器的设置及清除

循环执行:

var timeid = window.setInterval(“方法名或方法”,“延时”)

window.clearInterval(timeid)

<script type="text/javascript">

$(document).ready(function(){    //循环执行,每隔1秒钟执行一次 1000     var

t1=window.setInterval(refreshCount, 1000)

function refreshCount() {

console.log("ready")

}

//去掉定时器的方法

window.clearInterval(t1)

})

</script>

2.定时执行:当方法执行完成定时器停止(但是定时器还在,只不过没用了)

var tmid = window.setTimeout(“方法名或方法”, “延时”)

window.clearTimeout(tmid)

<script type="text/javascript">

$(document).ready(function(){    //定时执行,5秒后执行

var t1=window.setTimeout(refreshCount, 1000 * 5)   function refreshCount() {

console.log("ready")

}    //去掉定时器的方法      window.clearTimeout(t1)

})

</script>

内存无法回收,造成内存泄露。js定时器不会被自动销毁,即它所占内存无法被自动回收,如果不回收清除定时器,它会一直占用内存资源,造成内存泄漏。定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务通过后台线程的方式执行。

JavaScript中可以实现定时器功能的有两个函数——setTimeout和setInterval,二者的不同是setTimeout只执行一次,而setInterval是以指定的时间间隔重复执行。setTimeout可以使用clearTimeout取消,setInterval可以使用clearInterval取消。

有时,我们会用setTimeout(callback,0)将任务推迟一段很短的时间,但是其实通过process.nextTick(callback)来实现会更好,因为Node中的事件循环在一个处理事件队列的循环里运行,每循环一次称为一个“tick”。使用process.nextTick(callback)回调函数会在事件队列内所有事件处理完毕后,会在下次事件循环之前被调用,即进入下个event loop前执行;而setTimeout(callback,0)把回调延迟到后面的某个event loop执行,具体由设置的延时时间和event loop的执行时间决定。

这样可以保证my_async_function函数是顺序执行。