- JS的script代码块是属于宏任务吗?目前看到很多资料都是把script当成宏任务处理,但是见下面的代码
<script>
console.log('script1')
Promise.resolve().then(()=>{console.log('promise1')})
</script>
<script>
console.log('script2')
</script>
按照script代码块是宏任务的说法,输出应该如下:
script1
promise1
script2
但是实际上的输出为:
script1
script2
promise1
这是为什么?
- 如果script代码块是宏任务的话,既然消息队列是由事件触发线程维护,那么在浏览器渲染HTML时,解析到script标签后,是交给事件触发线程把script代码执行任务入队,然后其入调用栈后,JS线程再进行解析?
行内 script 是解析后立即执行,同步解析,同步执行。
.then 是解析后执行,异步回调。