一文搞懂node.js中的事件循环
陈述总结
主要学习了,NodeJS的事件循环的模型,从V8引擎解析JS代码,然后调用NodeAPI,NodeAPI将任务分配给底层Libuv库去执行,主要事件循环机制都是由Libuv库完成的。
整个事件循环划分了6个阶段:timer阶段,pendding callback阶段、poll阶段、check阶段、close callback阶段,执行的顺序是:每个阶段中的任务队列执行完后再执行微任务,只有微任务执行完成后再执行下一个阶段。浏览器的事件循环没有划分阶段,优先级顺序:同步代码、微任务、宏任务。
面试题
题1:你对NodeJS的事件循环的理解?
回答:我对事件循环的理解Node是单线程的,主线程将所有任务都放在循环队列中,然后由底层的libuv库从循环事件队列中取出任务分配给不同的线程去处理,主线程同时也会进行回调处理,整个过程形成事件循环。
与浏览器事件循环不同点:
1、浏览器没有划分多个阶段
2、浏览器任务优先级:同步代码,微任务,宏任务
题2:事件队列中的任务执行顺序?
回答:NodeJS事件循环是划分多个阶段,执行顺序是:一个阶段执行完成后,再执行微任务,然后再进行下一阶段的执行。
以上就是一文搞懂node.js中的事件循环的详细内容,更多请关注毛票票其它相关文章!