JS EventLoop

EventLoop 事件循环
本篇摘录于这一次,彻底弄懂 JavaScript 执行机制

setTimeout(function(){
    console.log('定时器开始啦')
});

new Promise(function(resolve){
    console.log('马上执行for循环啦');
    for(var i = 0; i < 10000; i++){
        i == 99 && resolve();
    }
}).then(function(){
    console.log('执行then函数啦')
});

console.log('代码执行结束');

实际上打印出来的是(知识点就是异步任务的 宏任务以及微任务的顺序)

// 马上执行for循环啦
// 代码执行结束
// 执行then函数啦
// 定时器开始啦

任务分为:

  • 同步任务
  • 异步任务
image.png

任务队列(task/event queue ?)又分为:宏任务队列(可以包含多个,个人理解是宏任务过大,所以分为多个进行,而微任务小所以集成一个),微任务队列(只有一个)

异步任务有更精细的定义:

  • macro-task(宏任务)包括整体代码 script,setTimeout,setInterval,setImmediate(node.js)
  • micro-task(微任务) Promise,process.nextTick(node.js)

整体任务的顺序: 先进行宏任务(可以有多个)-> 微任务 -> 宏任务 -> 微任务 ···

image.png

异步编程模式有哪些呢?

1. 事件监听(事件发布/订阅)

这是一种常见的异步编程内模式,典型的逻辑分离方式,对代码解耦很有用处

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

推荐阅读更多精彩内容