浏览器的事件循环

2021-09-25  本文已影响0人  娜娜的简书

为什么有事件循环?

    js是单线程(如果多线程,一个线程要删除dom,一个要修改dom,会冲突),但是如果想要处理一些异步逻辑,这个时候就出现了even loop。

宏任务和微任务了解吗?

    宏任务:整体代码块,setTimeout,setIntreval,

    微任务: new Promise().then()中的then,

为什么要引入微任务,只有一种类型的任务不行么?

    宏任务,先进先出的原则。如果有优先级高一点的任务,先进先出是不行的,这个时候有了微任务。

浏览器里的事件循环?

    事件循环,先执行宏任务,其中同步任务立即执行,异步任务,加载到对应的的Event Queue中(setTimeout等加入宏任务的Event Queue,Promise.then加入微任务的Event Queue),所有同步宏任务执行完毕后,如果发现微任务的Event Queue中有未执行的任务,会先执行其中的任务,这样算是完成了一次事件循环。接下来查看宏任务的Event Queue中是否有未执行的任务,有的话,就开始第二轮事件循环,依此类推。 

上一篇 下一篇

猜你喜欢

热点阅读