延时函数 与 间隔函数
2016-12-21 本文已影响116人
Hunter_Gu
延时函数 setTimeout(function(){},ms);
clearTimeout(d);
var d = setTimeout(function(){},ms);
- setTimeout(function(){},0);
var a = 1;
setTimeout(function(){
console.log('before:' + a);
a = 2;
console.log('after:' + a);
},0);//设置为0,相当于放在最后执行
a = 100;
console.log(a);
相当于:
var a = 1;
a = 100;
console.log(a);
setTimeout(function(){
console.log('before:' + a);
a = 2;
console.log('after:' + a);
},0);//以最快的方式执行
- 需要注意的是:
for(var i = 0;i < 10;i ++){
setTimeout(function(){
console.log(i);
},1000);
}
// 结果为输出:10(因为1s内,循环早已完成)
间隔函数 setInterval(function(){},ms);
clearInterval(d);
var d = setInterval(function(){},ms);
- 任务序列,当执行代码的时间大于间隔时间时
setInterval(function(){
...//这行这些代码需要花1500ms
},1000)
当出现这种情况时,会等待当前代码执行完,等待执行的代码会加入任务序列中,等当前代码执行完后,立即执行。
setTimeout 与 setInterval 区别
- setTimeout
setTimeout(function(){
...//这行这些代码需要花1s
},1000)
总时间 = 1s + 1000ms
- setInterval
setInterval(function(){
...//这行这些代码需要花500ms
},1000)
总时间 = 500ms + (1000 - 500)ms.
使用 setTimeout 模拟 setInterval
setTimeout(function(){
setTimeout(arguments.callee,10)
},10);
但是,这实际上比 setInterval 时间更长一些