Nodejs事件循环

nodejs 官网链接:Node.js

nodejs 官网对于事件循环的解释:Node.js 事件循环,定时器和 process.nextTick() | Node.js

1.事件循环目的:处理非阻塞 I/O 操作的机制 

非阻塞I/O 操作:指以异步来执行函数,先执行同步任务,耗时任务放在事件队列中,以此轮询执行(类似于吃饭排队叫号,过号了不等侯)。(参考:非阻塞I/O_百度百科)

即遇到同步任务时,直接执行;而遇到异步任务会把任务放在一个地方放着,等所有同步任务执行完之后。将异步任务放入先后顺序执行。这就是事件循环

2.事件循环分为宏任务和微任务

  1. 每个宏任务包含了一个微任务
  2. 等宏任务功能完成之后,执行宏任务中的微任务,再执行下一个宏任务。
宏任务 微任务
谁发起 宿主(Node,浏览器) js引擎
具体事件

1.script 标签内部代码

2.setTimeout/setInterval

3.ajax请求

4.事件绑定

1.Promise的then,catch ,finally

(但是then 前面的内容为同步)

js 中: 同步任务>微任务>宏任务

例题1:


Nodejs事件循环_第1张图片

例题2:

async function async1 () {
  console.log('async1 start')
  await async2();
  console.log('async1 end')
}
 
async function async2 () {
  console.log('async2')
}
 
console.log('script start')
 
setTimeout(function () {
  console.log('setTimeout')
}, 0)
 
async1();
 
new Promise (function (resolve) {
  console.log('promise1')
  resolve();
}).then (function () {
  console.log('promise2')
})
 
console.log('script end')

 Nodejs事件循环_第2张图片

 

 

你可能感兴趣的:(JS,js,node.js,事件循环)