setTimeout与setInterval

2019-01-21  本文已影响0人  sarah_wqq

一、setTimeout

1.原理

setTimeout(function(){
    /*do something*/
},N);

等待N秒后,往消息队列插入一条定时器事件消息,第一个参数作为回调函数;
而当执行栈内同步任务执行完毕时,线程从消息队列读取消息,将该异步任务入栈,执行;线程空闲时再次从消息队列读取消息。

2.时间不准确

所以异步执行时间不精确是必然的,但是无论是同步任务还是异步任务,都不应该耗时太长,当一个消息耗时太长时,应该尽可能的将其分割成多个消息。

二、setInterval

1.原理

var timerID = setInterval(function(){
    /*do something*/
},N);

clearInterval(timerID);

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

三、同样的循环调用机制

setTimeout(function(){
    ...
    setTimeout(arguments.callee,10);
},10);

setInterval(function(){...},10);
上一篇 下一篇

猜你喜欢

热点阅读