码迷,mamicode.com
首页 > Web开发 > 详细

nodejs事件循环

时间:2018-02-23 22:17:00      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:回调函数   int   lib   check   ejs   就会   无限   参数   dia   

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事件循环

标签:回调函数   int   lib   check   ejs   就会   无限   参数   dia   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!