美文网首页
JS EventLoop

JS EventLoop

作者: Kerwin_F | 来源:发表于2019-01-25 01:08 被阅读0次

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. 事件监听(事件发布/订阅)

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

相关文章

网友评论

      本文标题:JS EventLoop

      本文链接:https://www.haomeiwen.com/subject/imjbxqtx.html