- event loop JS主线程不断的循环往复的从任务队列中读取任务,执行任务,这种运行机制称为事件循环
- Microtasks(微任务)、Macrotasks(宏任务
Microtasks和Macrotasks是异步任务的一种类型,Microtasks的优先级要高于Macrotasks,下面是它们所包含的api
- microtasks(微任务)
- process.nextTick
- promise
- Object.observe (废弃)
- MutationObserver
- macrotasks(宏任务)
- setTimeout
- setImmerdiate
- setInterval
- I/O
- UI 渲染
- 执行顺序
同步任务 -> 微任务 -> 宏任务
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');