JavaScript是单线程语言,但它允许通过设置超时值和间歇值来调度代码在特定的时刻内执行。
超时调用
超时调用需要使用window对象的setTimeout()方法,使用方式如下:
setTimeout(function(){
alert("hello world!");
},1000) //1秒过后执行函数
超时调用可能不会在指定的时间内执行,因为js有一个任务队列,setTimeout第二个参数是告诉js再过多长时间把当前任务添加到任务队列中。如果任务队列是空的,那么添加的代码回立即执行;如果不为空,则要等待前面代码执行完后再执行。
调用setTimeout后会有一个数值ID,通过这个ID可以取消超时操作,代码如下:
var timtoutId = setTimeout(function(){
alert("hello word!");
},1000);
clearTimeout(timeoutId);//取消超时调用
如果超时调用已发生,则clearTimeout无效。
间歇调用
间歇调用是按照指定的时间间隔重复执行代码
var intervalId = setInterval(function(){
alert("Hello world!");
},10000)
clearInterval(intervalId );//取消间歇调用
间歇调用和超时调用类似,但是取消间歇调用的重要性远远高于取消超时调用,因为超时调用在代码执行完后就会停止,它的超时调用ID也没有必要跟踪,而间歇调用会直到页面被卸载。最好的方式是尽量用超时调用代替间歇调用