JavaScript同步任务、异步任务
- 同步任务: 当前主线程将要消化执行的任务,这些任务一起形成执行栈。
- 异步任务: 不进入主线程,而是进入任务队列,即不会马上进行的任务。
任务队列的异步任务又分为宏任务与微任务,也就是说宏任务和微任务虽然都是异步任务,都在任务队列中,但是它们在不同的队列中。
一般情况下,宏任务包含以下内容:script,setTimeout setInterval, I/O, 事件,postMessage,setImmediate, requestAnimationFrame, UI渲染。
微任务包含以下内容: Promise.then, MutationObserver, process.nextTick
示例:
console.log('start here');
setTimeout(() => {
console.log('setTimeout');
}, 0);
new Promise((resolve, reject) => {
resolve('promise result');
}).then(value => {
console.log(value);
});
console.log('end here');
输出结果:
start here // 同步任务
end here // 同步任务
promise result // 微任务
setTimeout // 宏任务
可以看出是先执行同步任务,然后执行微任务,然后执行宏任务。但是由于先执行script,浏览器会先执行一个宏任务,再执行同步任务,如果有异步代码的话才会先执行微任务。

最低0.47元/天 解锁文章
1856

被折叠的 条评论
为什么被折叠?



