美文网首页
js的eventLoop事件循环

js的eventLoop事件循环

作者: LuckySweet123 | 来源:发表于2021-04-10 19:13 被阅读0次

js代码是按顺序从上到下执行的,先执行同步任务,然后执行异步任务,那有两个或者更多异步任务的时候先执行哪个呢?这个就涉及到微任务和宏任务的概念了。

console.log(1);
setTimeout(function(){
  console.log(2)
},0)
new Pomise(function(resolve){
    console.log(3)
    resolve()
}).then(
  console.log(4)
)
console.log(5)

从上到下先输出1, 5,3
两个异步任务先执行谁呢? setTimeout是宏任务, .then是微任务
先执行微任务后执行宏任务,输出4,2
这个时候我们就会有疑问,为什么微任务先于宏任务呢?
宏任务:DOM渲染后触发,如setTimeout
微任务:DOM渲染前触发,如Promise
我们通过实践验证一下:

 <div class="container"></div>
    <script>
     let container=document.querySelector('.container')
     const p1="<p> 第1行</p>"
     const p2="<p> 第2行</p>"
     const p3="<p> 第3行</p>"
     container.innerHTML=p1
     container.innerHTML+=p2
     container.innerHTML+=p3
     console.log('length:'+container.children.length)
     setTimeout(function(){
        const length=container.children.length
         alert(`定时器${length}`)
     },0)
     Promise.resolve().then(()=>{
         const length=container.children.length
         alert(`p:${length}`)
     })
1618053080(1).png 1618053100(1).png

图中可以看到,promise是在dom渲染之前,定时器是在dom渲染之后

微任务是ES6语法规定的
宏任务是浏览器规定的

相关文章

  • js 事件循环 eventLoop

    首先 js 是一个单线程 第二个 js 执行的顺序 程序 -----> 宏任务 ---> 微任务 宏任务 set...

  • 浅谈 JS 事件循环 (Event Loop)

    注: 文章参考自浅析 JS 中的 EventLoop 事件循环(新手向)[https://savokiss.com...

  • js的eventLoop事件循环

    js代码是按顺序从上到下执行的,先执行同步任务,然后执行异步任务,那有两个或者更多异步任务的时候先执行哪个呢?这个...

  • 用这道题巩固你的EventLoop知识(再谈EventLoop)

    关于EventLoop 说起EventLoop(事件循环),这真是一个JS中经久不衰的话题啊,从我个人浅显的阅历来...

  • 面试遇到的问题

    2019 web 前端面试总结(内附面经) js事件循环(EventLoop) 浏览器缓存 BFC js基本类型 ...

  • JS事件循环EventLoop初探

    概念 js是基于单线程运行的,而一些特定事件又是异步执行的,所以这种单线程+异步的执行方式一定是事件驱动的 而一...

  • JS事件循环机制 eventloop

    如何理解JS事件的循环机制(浏览器端)答: 我们知道JS是单线程运行的(暂时撇去web worker)、是异步的、...

  • netty-event-loop

    EventLoop是netty中负责处理Channel的IO事件的对象。从名称可以得知eventLoop是事件循环...

  • JS中EventLoop事件循环机制

    JavaScript的事件分两种,宏任务(macro-task)和微任务(micro-task) 先记住两个概念:...

  • js事件循环(eventLoop)、macrotask、micr

    看了多篇关于js事件循环机制解读的博文,知识点不少,做个笔记。对于自己而言好记性不如烂笔头嘛~(╹▽╹)。不想看的...

网友评论

      本文标题:js的eventLoop事件循环

      本文链接:https://www.haomeiwen.com/subject/mivnkltx.html