(function a () {
console.log(1);
setTimeout(function(){console.log(2);}, 1000); // 第3行
console.log(3);
setTimeout(function(){console.log(4);}, 0); // 第5行
})()
今天查看事件循环的时候看到这么一句话:setTimeout 的回调函数只是会被添加至任务队列,而不是立即执行。
我想问一下先添加的就先执行(先进先出)吗?还是说会把任务队列里的任务按照延迟时间排序,时间越少的越先执行?那如果第3行和第5行的时间都是1000毫秒呢?哪个先执行?
先添加的先进
定时器队列
。定时器队列
里先到时间的先进任务队列。然后任务队列里的先进先出。