为什么有事件循环?
js是单线程(如果多线程,一个线程要删除dom,一个要修改dom,会冲突),但是如果想要处理一些异步逻辑,这个时候就出现了even loop。
宏任务和微任务了解吗?
宏任务:整体代码块,setTimeout,setIntreval,
微任务: new Promise().then()中的then,
为什么要引入微任务,只有一种类型的任务不行么?
宏任务,先进先出的原则。如果有优先级高一点的任务,先进先出是不行的,这个时候有了微任务。
浏览器里的事件循环?
事件循环,先执行宏任务,其中同步任务立即执行,异步任务,加载到对应的的Event Queue中(setTimeout等加入宏任务的Event Queue,Promise.then加入微任务的Event Queue),所有同步宏任务执行完毕后,如果发现微任务的Event Queue中有未执行的任务,会先执行其中的任务,这样算是完成了一次事件循环。接下来查看宏任务的Event Queue中是否有未执行的任务,有的话,就开始第二轮事件循环,依此类推。
网友评论