回答
以上代码中先打印 xiaoming 然后才到 libai,其中的原理如下。
首先整个代码块 script 会作为一个宏任务,放到任务队列中去执行。
在执行的过程中遇到了 sestTimeout ,把它放在宏任务的队列中。
继续往下执行遇到了 document.write('xiaoming') 表示要在页面上渲染 xiaoming,但此时不会立即渲染。
继续往下执行,当前宏任务执行完毕。
开始渲染页面。这个时候 xiaoming 就被渲染到页面上了。
执行所有可执行的微任务。
执行下一个宏任务。
当期事件结束,开始重复下一次循环。也就是执行下一个宏任务。直到所有宏任务都执行完毕。