Event Loop

文章

console.log('1');

setTimeout(function() {
    console.log('2');
    process.nextTick(function() {
        console.log('3');
    })
    new Promise(function(resolve) {
        console.log('4');
        resolve();
    }).then(function() {
        console.log('5')
    })
})
process.nextTick(function() {
    console.log('6');
})
new Promise(function(resolve) {
    console.log('7');
    resolve();
}).then(function() {
    console.log('8')
})

setTimeout(function() {
    console.log('9');
    process.nextTick(function() {
        console.log('10');
    })
    new Promise(function(resolve) {
        console.log('11');
        resolve();
    }).then(function() {
        console.log('12')
    })
})

  • 整体代码作为一个宏任务进入,开始第一个循环
  • 执行同步 //1
  • stime1 放入宏任务队列任务
  • process.nextTick ,process1进入微任务队列,
  • new promise 立即执行 //7
  • then1放入微任务队列
  • stime2 放入入宏任务队列
  • 完成第一个宏任务(整体代码script)
  • 执行微任务process1 then1 //6 8
  • 结束第一次循环,开始第二次循环,执行宏任务stime1,//2
  • process2放入微队列中
  • new promise //4
  • 添加微任务then2
  • 执行微任务process2 then2 结束第二次循环 // 3 5
  • 执行宏任务stime2 // 9
  • 新增微任务process3
  • new promise //11
  • 添加微任务then3
  • 执行process3 then3 结束第三次循环 // 10 12
    所以输出结果1 7 6 8 2 4 3 5 9 11 10 12
(0)

相关推荐

  • 事件循环 EventLoop(Promise,setTimeOut,async/await执行顺序)

    什么是事件循环?想要了解什么是事件循环就要从js的工作原理开始说起: JS主要的特点就是单线程,所谓单线程就是进程中只有一个线程在运行. 为什么JS是单线程的而不是多线程的呢? JS的主要用途就是与用 ...

  • Event Loop 是什么?

    Event Loop 是什么? 本文写于 2020 年 12 月 6 日 广义上来说 Event Loop 并不是 JavaScript 独有的概念,他是一个计算机的通用概念. 狭义上来说,只有 No ...

  • Promis.then()

    Promis.then()

  • 13.Promise

    Promise介绍 Promise是ES6引入的异步编程的新解决方案.语法上Promise是一个构造函数,用来封装异步操作并可以获取其成功或失败的结果. Promise构造函数:Promise(exc ...

  • 浏览器的 Event Loop

    前端技术优选 昨天 以下文章来源于掘金开发者社区 ,作者小蘑菇哥哥 掘金开发者社区 掘金,一个帮助开发者成长的技术社区 前端技术优选 为你精选前端领域优质技术博文,欢迎关注. 57篇原创内容 公众号 ...

  • 事件循环Event loop到底是什么

    摘要:本文通过结合官方文档MDN和其他博客深入解析浏览器的事件循环机制,而NodeJS有另一套事件循环机制,不在本文讨论范围中.process.nextTick和setImmediate是NodeJS ...

  • js 彻底搞懂事件循环机制 Event Loop

    我们都知道javascript是单线程语言,就是因为单线程的特性,就不得不提js中的同步和异步 一.同步和异步 所谓单线程,无非就是同步队列和异步队列,js代码是自上向下执行的,在主线程中立即执行的就 ...

  • 【HAM说】高效率全向多波段HF天线——LOOP技术攻略

    前言 最近的几期关于端馈的分享,收获的很多朋友们的肯定.在不少群里刚刚冒泡就被冠以"大佬"的称呼,作为一个新人来说实在是愧不敢当.对于我个人而言我只是复制了国内外别人的固有成果而已 ...

  • TPAMI 2021 :基于 event stream 的步态识别,准确率高达90%!

    作者丨张贤同学 审稿丨邓富城 编辑丨极市平台 极市导读 本文介绍了作者被TPAMI接收的工作,基于 event stream 的两种不同表示形式,提出了一种新的基于 event stream 的步态识 ...

  • DEDECMS教程之loop循环标签的使用详解

    DedeCMS v5.7的loop标签非常有用,可以使用它来调用任意表中的数据,我们先来看看loop标签的语法结构. {dede:loop table='table_name' if='conditi ...

  • LIT.EVENT|世界读书日,故事从一杯咖啡开始

    文穴线上&线下双活动 4.23世界读书日 4.24文穴杭州书友面基日 活动一:4.23世界读书日知识竞赛 为了让大家的阅读生活更加有趣,文穴联合新民说推出了线上读书日知识竞赛活动,在阅读群内以 ...

  • 不熟悉新版houdini Loop循环使用方法的同学请看过来

    --  微资讯 · 微课程  -- 利用零碎时间,走上超神之路! 已经发布houdini材质翻译篇:有几位同学由于超过48小时不能回复了,打赏过的材质翻译的同学请再次回复一下,麻烦大家了~ 之前有同学 ...