首页 > Web开发 > 详细

nodejs事件循环

时间:2018-02-23 21:12:04      阅读:181      评论:0      收藏:0      [点我收藏+]

1. 只有一个主线程,node开始执行脚本时,会先进事件循环初始化(同步任务,发出异步请求,规划定时器生效时间,执行promise.nextTick等),这是事件循环还未开始。

2. nodejs每一轮事件循环的六个阶段(事件循环会无限次执行,直到异步任务的回调函数队列清空才会停止执行):

  1. timers(处理setTimeout和setInterval的回调函数)
  2. I/O callbacks(除了setTimeout、setInterval、setImmediate、用于关闭请求的回调函数)
  3. idle,prepare(libuv内部使用)
  4. poll(等待还未返回的I/O事件)
  5. check(setImmediate)
  6. close callbacks(执行关闭请求的回调,如socket.on(‘close‘, ...))

3. setTimeout和setImmediate:

    由于setTimeout第二个参数默认为0,但是加上node做不到真正的0ms,最少也需要1s;所以实际执行进入事件循环后,如果没到1ms,那么timers阶段就会跳过进入check阶段,所以执行顺序不确定。

4. 异步任务分两种:

    本轮循环:promise.nextTick、promise的回调函数

    次轮循环:setTimeout、setInteval、setImmediate的回调函数

nodejs事件循环

原文:https://www.cnblogs.com/colima/p/8463331.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!