0
点赞
收藏
分享

微信扫一扫

浏览器和Node.js在事件循环(Event Loop)区别

浏览器和Node.js在事件循环(Event Loop)的实现上存在一些区别。

浏览器的事件循环模型通常被称为浏览器的Event Loop,而Node.js的事件循环模型被称为Node.js的Event Loop。虽然它们的目标都是处理事件和异步操作,但由于运行环境的差异,它们在实现上有所不同。

以下是浏览器和Node.js事件循环的一些区别:

  1. 执行环境:浏览器的Event Loop运行在浏览器环境中,而Node.js的Event Loop运行在Node.js环境中。浏览器的Event Loop负责处理浏览器事件、用户交互和渲染等,而Node.js的Event Loop主要处理I/O操作和网络请求等。

  2. Event Loop 事件循环的流程有一点区别:浏览器的Event Loop通常在每次完成宏任务后执行微任务队列,然后执行浏览器渲染,从而实现动画效果。而Node.js的Event Loop在每次完成一个宏任务后,会先执行微任务队列,然后继续执行下一个宏任务。

  3. Event Loop的运行机制:浏览器的Event Loop通常是单线程的,通过异步回调函数和事件触发来实现非阻塞的异步操作。而Node.js的Event Loop是基于Libuv库实现的,它利用了底层操作系统提供的多线程特性,使得Node.js能够处理更高的并发请求。

  4. 宏任务和微任务处理不同

nodejs宏任务和微任务还分类型,有优先级的

nodejs宏任务优先级

  • Timers-setTimout、setInterval
  • I/O callbacks-处理网络、流、TCP的错误回调
  • Idle,prepare-闲置状态(nodejs内部使用)
  • Poll轮询-执行poll中的I/O队列
  • Check检查-储存setImmediate回调
  • Close callbacks-关闭回调,如socket.on('close')

setTimeout / io的回调 / idle node内部用的 / poll中的io队列 / check 检查 setImmediate / close关闭回调的一些方法

nodejs微任务优先级

  • 包括:promise,asycn/await,process.nextTick
  • process.nextTick优先级最高
举报

相关推荐

0 条评论