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函数啦
// 定时器开始啦
任务分为:
- 同步任务
- 异步任务
任务队列(task/event queue ?)又分为:宏任务队列(可以包含多个,个人理解是宏任务过大,所以分为多个进行,而微任务小所以集成一个),微任务队列(只有一个)
异步任务有更精细的定义:
- macro-task(宏任务)包括整体代码 script,setTimeout,setInterval,setImmediate(node.js)
- micro-task(微任务) Promise,process.nextTick(node.js)
整体任务的顺序: 先进行宏任务(可以有多个)-> 微任务 -> 宏任务 -> 微任务 ···
异步编程模式有哪些呢?
1. 事件监听(事件发布/订阅)
这是一种常见的异步编程内模式,典型的逻辑分离方式,对代码解耦很有用处