console.log(1) setTimeout(function () { console.log(2) }, 5000); setTimeout(function () { console.log(4) }, 500); console.log(3); output:1-3-4-2
Javascript会把回调函数
放入主线程
外的任务队列
中,任务队列
是一个先进先出的队列
。
那么回到上面的代码中,function () { console.log(2) }
是排在function () { console.log(4) }
前面的,为什么会先打印4呢?
就算是先进先出,也有条件的,
setTimeout
函数本身有延迟时间,你的setTimeout(function () { console.log(4) }, 500);
因为设置的延迟时间比setTimeout(function () { console.log(2) }, 5000);
短,不考虑其他什么运行机制,就看逻辑,4
不也是应该比2
先输出么?http://www.suchso.com/projecteactual/Javascript-setTimeout-timer.html