猿问

Javascript异步事件的疑问

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呢?
拉丁的传说
浏览 256回答 2
2回答

墨色风雨

就算是先进先出,也有条件的,setTimeout函数本身有延迟时间,你的setTimeout(function(){console.log(4)},500);因为设置的延迟时间比setTimeout(function(){console.log(2)},5000);短,不考虑其他什么运行机制,就看逻辑,4不也是应该比2先输出么?
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答