JavaScript系列-事件循环

123 阅读2分钟

面试了许多求职者,很多求职者只知其然,而不知所以然,写此文章为广大前端小伙伴指引迷津。纯干货!纯干货!纯干货!

目录

事件循环

什么是事件循环?

答:1.从宏任务的头部取出一个任务执行;2.执行过程中若遇到微任务则将其添加到微任务的队列中;3.宏任务执行完毕后,微任务的队列中是否存在任务,若存在,则挨个儿出去执行,直到执行完毕;4.GUI线程渲染;这 4 步构成了一个事件的循环检测机制,即我们所称的eventloop

宏任务有哪些?

答:script(整体代码)、setTimeout、setInterval、UI交互事件。

微任务有哪些?

答:Promise.then、MutationObserver、async/await。

事件循环的笔试题?
console.log('start');
setTimeout(() => {
    console.log('children2');
    Promise.resolve().then(() => {
        console.log('children3');
    })
}, 0);

new Promise(function(resolve, reject) {
    console.log('children4');
    setTimeout(function() {
        console.log('children5');
        resolve('children6')
    }, 0)
}).then((res) => {
    console.log('children7');
    setTimeout(() => {
        console.log(res);
    }, 0)
})

答案:startt、children4、children2、children3、children5、children7、children6  
面试大白话

答:首先,js是单线程的,它的运行机制是1.从宏任务的头部取出一个任务执行;2.执行过程中若遇到微任务则将其添加到微任务的队列中;3.宏任务执行完毕后,微任务的队列中是否存在任务,若存在,则挨个儿出去执行,直到执行完毕;4.GUI线程渲染;这 4 步构成了一个事件的循环检测机制,即我们所称的eventloop

小白也是新手面试官,欢迎领导莅临指导工作,提出建议,小白不胜感激,不喜勿喷,点赞收藏随机送程序媛小姐姐一枚哦!!!