script属于宏任务吗?
时间: 2023-09-19 08:02:26 浏览: 46
Script 不属于宏任务。
宏任务是指由浏览器在主线程上执行的任务,它们一般包括整体代码块、setTimeout、setInterval 等异步操作。而 script 是用来引入外部脚本文件或者内嵌的脚本代码的 HTML 元素。
当浏览器遇到 script 标签时,会立即停止 HTML 解析,去下载并执行这段脚本。在执行 script 过程中,它会阻塞页面的渲染,也就是说后续的 HTML 解析和渲染会暂停,直到脚本执行完毕才会继续。因此,script 的执行过程是同步的,它不会创建宏任务。
需要注意的是,如果 script 标签中的脚本代码包含了一些异步操作,比如使用了 setTimeout 或者 AJAX 请求,这些异步操作将会创建宏任务。但是 script 本身并不属于宏任务。
相关问题
如何理解宏任务和微任务
宏任务和微任务是在JavaScript中用来管理任务执行顺序的概念。
宏任务是指由浏览器提供的任务,它们通常是由用户交互、网络请求、定时器等触发的。常见的宏任务包括整体script代码、setTimeout、setInterval和setImmediate等。宏任务会在执行过程中创建自己的微任务队列。
微任务是指在宏任务执行过程中产生的任务,它们通常是由Promise、MutationObserver等异步操作触发的。微任务会在宏任务执行结束前执行,即微任务总是在宏任务执行结束前执行。常见的微任务包括Promise和MutationObserver。
在一个宏任务中,如果执行过程中产生了新的微任务,这些新的微任务会被添加到微任务队列中,并在当前宏任务中继续执行。这意味着微任务不会推迟到下一个宏任务中执行。
总结来说,宏任务和微任务是用来管理任务执行顺序的机制。宏任务由浏览器提供,微任务由JavaScript引擎提供。微任务总是在宏任务执行结束前执行,而新产生的微任务会在当前宏任务中继续执行。控制微任务的执行时长对于控制宏任务的执行时长非常重要。
宏任务和微任务
在 JavaScript 中,宏任务和微任务都是异步操作的执行单元。
宏任务包括:script(整体代码)、setTimeout、setInterval、I/O 操作、UI 渲染等。当执行完一个宏任务后,会清空所有微任务队列,然后执行下一个宏任务。
微任务包括:Promise.then、Promise.catch、Promise.finally、MutationObserver 等。当一个微任务队列中的所有任务都执行完毕后,会立即执行下一个宏任务。如果在执行微任务过程中又产生了新的微任务,则会加入到当前微任务队列的末尾,等待下一次执行。
举个例子:
```javascript
console.log('start');
setTimeout(function () {
console.log('setTimeout');
}, 0);
Promise.resolve()
.then(function () {
console.log('promise1');
})
.then(function () {
console.log('promise2');
});
console.log('end');
```
输出的结果为:
```
start
end
promise1
promise2
setTimeout
```
因为 setTimeout 是一个宏任务,所以会先执行整个 script,输出 start 和 end,然后将 setTimeout 加入到宏任务队列中。而 Promise.then 是一个微任务,所以会在当前宏任务执行完毕后立即执行,输出 promise1 和 promise2。最后执行宏任务队列中的 setTimeout,输出 setTimeout。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)