Javascript ES6 Promise的执行顺序

下面代码的输出是什么?

setTimeout(function(){
   console.log(1)
}, 0);

new Promise(function (resolve) {
   console.log(2);

   for (var i = 0; i < 10000; i++) {
       i == 9999 && resolve();
   }
   console.log(3);
}).then(function () {
   console.log(4);
});

console.log(5);

本能的以为setTimeout定时为0,可以马上执行回调方法,输出应该是1、2、3、4、5。
在浏览器上执行发现输出的顺序是2、3、5、4、1.

结论:

  1. setTimeout定时为0也不是同步马上执行,而是异步执行。
  2. Promise函数会同步执行。
  3. Promise中的resolve执行后,then()不是同步执行,而是异步执行。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在老人眼中,我是很败家的,因为我总是给宝宝买各种各样的东西。尿不湿一箱一箱的,奶粉一件一件的,各种玩具汽车,代步车...
    念娘阅读 364评论 0 1
  • 周六的早晨,学校醒来的好像也晚了。 也许是,这方土地和大家都为昨晚的电闪雷鸣失了眠。 而我,却浑然不知昨晚发生了什...
    一个不会讲故事的姑娘阅读 231评论 0 3
  • 姓名:顾君 单位:宁波大发化纤有限公司 学习组:第234期努力一组 【日精进打卡第62天】 【知~学习】 《六项精...
    JASONGU_2f28阅读 200评论 0 0