美文网首页
JS中的事件循环

JS中的事件循环

作者: 真是个非常帅气的昵称呢 | 来源:发表于2021-05-12 21:01 被阅读0次
    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)
    })
//输出
//start 4 2 3 5 7 6

宏任务

包括:包含执行整体的js代码,事件回调,XHR回调,定时器(setTimeout/setInterval/setImmediate),IO操作,UI render

微任务

包括:更新应用程序状态的任务,包括promise回调,MutationObserver,process.nextTick,Object.observe

image.png

事件循环的步骤
1.执行宏任务队列中的一个任务
2.执行微任务队列中的所有任务
3.UI render

setTimeout(function() {console.log('timer1')}, 0)

requestAnimationFrame(function(){
    console.log('requestAnimationFrame')
})

setTimeout(function() {console.log('timer2')}, 0)

new Promise(function executor(resolve) {
    console.log('promise 1')
    resolve()
    console.log('promise 2')
}).then(function() {
    console.log('promise then')
})

console.log('end')
//输出1  : promise1,promise2,end,promise then,requestAnimationFrame,timer1,timer2
//输出2  : promise1,promise2,end,promise then,timer1,timer2,requestAnimationFrame

浏览器只保证requestAnimationFrame的回调在重绘之前执行,没有确定的时间,何时重绘由浏览器决定

相关文章

  • 事件循环机制

    事件循环(evenloop) 事件循环机制是宿主环境提供的。js中处理异步,增加了任务队列的概念(你不知道的js中...

  • js 中的事件循环

    (大佬的总结)[https://juejin.im/post/5bc1adc45188255c82553921]

  • JS中的事件循环

    宏任务 包括:包含执行整体的js代码,事件回调,XHR回调,定时器(setTimeout/setInterval/...

  • 浏览器和Node事件循环的区别

    事件循环,是 js 中老生常谈的一个话题了,而在浏览器和 Node 中的事件循环执行机制也不相同,浏览器的事件循环...

  • js事件循环

    js 是单线程的, js 的异步事件就是依赖于事件循环机制 事件循环 首先,我们来解释下事件循环是个什么东西: 就...

  • JavaScript 04 (do...while循环/for

    js循环,js循环嵌套,js do...while循环,js的for循环,js中的break,js中的contin...

  • 2019-03-28

    JS 事件循环机制 - 任务队列、web API、JS主线程的相互协同 这篇文章的核心是分析js的事件循环,在此我...

  • js事件循环:微任务和宏任务

    浏览器JavaScript执行流程以及Node.js中的流程均基于事件循环。 了解事件循环的工作方式对于优化(有时...

  • Vue源码分析—响应式原理(四)

    nextTick JS 运行机制 JS 执行是单线程的,它是基于事件循环的。事件循环大致分为以下几个步骤: 所有同...

  • js笔记

    Javascript 事件循环: js解析方法时,将同步任务排队到执行栈中,异步任务排队到事件队列中。 事件队列分...

网友评论

      本文标题:JS中的事件循环

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