关于事件轮询/循环 EventLoop 宏任务 微任务 的简单理解

你是否因为一直没弄懂事件轮询而一直懊恼??

你是否在网上搜遍了各种回答、解析,不是字数太多没耐心读完 就是代码太复杂看起来有些吃力?

你是否一直在找能简单的把大体意思讲明白,知道大约怎么用就行了的回答?

没错 你找到我了!

先把万变不离其宗经典面试题 先展示给你 结果直接就是后面的数字的正确顺序 满足你立即想知道答案的急切心理
setTimeout(_ => console.log(4))

new Promise(resolve => {
  resolve()
  console.log(1)
}).then(_ => {
  console.log(3)
})

console.log(2)

// 在这里 第一个执行的同步代码为 1 第二个执行的同步代码为2   然后 3为微任务  4为宏任务 所以结果为1234
先死背这几点:

1.先执行同步代码再执行异步代码
2.先执行微任务再执行宏任务

常见宏任务: setTimeout 、setInterva、I/O , io 简单理解为输入输出流 上传文件 点击按钮这些与程序之间产生交互的勉强理解为I/O
常见微任务:process.nextTick 、 Promise.then 、catch、finally

所有会进入的异步都是指的事件回调中的那部分代码

在同步代码执行完成后才回去检查是否有异步任务完成,并执行对应的回调,而微任务又会在宏任务之前执行。

还有一点关于promise需要啰嗦一下:

promise本身是同步的 它里面的then才是异步的 这个需要搞明白
另外如果有人问 promise主要目的是做什么的
记住:是解决回调地狱的 它的直接作用就是把多层的嵌套回调,变成一长串的.then()方法的链式调用,主要作用就是方便。

事件轮询:轮流询问 宏任务队列 和 微任务队列

事件轮询.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容