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呢?

阅读 3.1k
2 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题