一.js事件机制是单线程非阻塞的
(1)单线程:按顺序执行
(2)非阻塞:event loop[lu:p]
event loop[lu:p]怎么实现非阻塞
先从执行栈和任务队列说起
执行栈:就是js所有同步任务都在主线程(call stack[stack])上执行,这里的主线程就是执行栈
推荐一个网站可视化工具loupe[lup]可以帮助观看js的调用堆栈、执行顺序
http://latentflip.com/loupe
异步任务是不进入主线程的,而是进入了任务队列,只有任务队列(Callback Queue)通知主线程,说某个异步可以执行了,这个任务才进入主线程
function a(){
b();
console.log('a');
}
function b(){
console.log('b');
//这边就是一个异步,先会放在任务队列两秒,两秒后会在主线程执行
setTimeout(function(){
console.log('c');
},2000)
}
a();

总结:
面试时把同步、异步、执行栈、任务队列之间的关系说清楚
深入了解:
深入理解js事件循环机制(浏览器篇)http://lynnelv.github.io/js-event-loop-browser
///查看js堆栈执行顺序http://latentflip.com/loupe
JS事件循环:单线程与非阻塞的奥秘
本文深入解析JavaScript的事件循环机制,重点介绍单线程和非阻塞特性。通过执行栈和任务队列的概念,阐述同步任务与异步任务的执行顺序,并推荐了一个在线工具Loupe来可视化JS调用堆栈和执行顺序。同时,提供了深入理解JS事件循环机制的阅读资源,帮助读者在面试中清晰地表达这些概念。
2万+

被折叠的 条评论
为什么被折叠?



