宏任务和微任务的区别 给出场景作答
时间: 2024-05-11 13:19:41 浏览: 167
01_2016年期末1
宏任务和微任务都是 JavaScript 中的异步操作,但它们的区别在于宏任务的执行优先级比微任务低。
举个例子:
```javascript
console.log('1');
setTimeout(() => {
console.log('2');
Promise.resolve().then(() => console.log('3'));
}, 0);
Promise.resolve().then(() => console.log('4'));
console.log('5');
```
输出结果为:
```
1
5
4
2
3
```
解释如下:
首先,同步代码会立即执行,输出 `1` 和 `5`。然后,`setTimeout` 的回调函数被放入宏任务队列中,而 `Promise.resolve().then()` 的回调函数被放入微任务队列中。
接下来,主线程执行完同步代码,开始处理任务队列中的任务,因为宏任务队列中的任务优先级比微任务队列中的任务低,所以先执行宏任务队列中的任务,即 `console.log('2')`,输出 `2`。接着,`Promise.resolve().then()` 的回调函数被放入微任务队列中,因此立即执行微任务队列中的任务,输出 `3`。
最后,任务队列中只剩下一个微任务,即 `Promise.resolve().then(() => console.log('4'))` 的回调函数,执行并输出 `4`。
因此,宏任务和微任务的区别在于它们在执行顺序上的差异。在实际开发中,我们可以利用宏任务和微任务的特性来控制代码的执行顺序,提高代码的性能和效率。
阅读全文