promise, 异步,同步,定时器的执行顺序

JavaScript执行顺序通常从上到下,但遇到定时器和异步操作时会改变。异步机制通过宏任务和微任务进行,先执行宏任务,再执行所有微任务。宏任务包括setTimeout等,微任务包括Promise、MutationObserver和process.nextTick。async函数返回Promise,await用于等待Promise解析,使得异步操作更易管理。
摘要由CSDN通过智能技术生成

通常情况下,js的执行顺序是从上到下的, 但是遇到定时器以及异步的时候情况会有所不一样.这时候想要理解它,得用宏任务以及微任务来解释了.js异步执行的机制是遇到宏任务就先执行宏任务,接着执行所有的微任务.然后再次从宏任务开始,找到其中一个任务队列执行完毕,再执行所有的微任务.微任务包括Promise、MutaionObserver、process.nextTick;宏任务包括setTimeout、setInterval、I/O等(这是深层次的宏任务)

示例如下:

    console.log('js-start');

    setTimeout(function() {
      console.log('定时器-1');
    }, 0);

    // 在申明的时候立即执行
    const newPromise6 = new Promise(function(resolve, reject) {
      resolve(console.log('Promise-1'));
      setTimeout(function() {
        console.log('定时器-2');
      }, 0);
    });

    newPromise6.then(function() {
      console.log('Promise-2');
      setTimeout(function() {
        console.log('定时器-3');
      }, 0);
    }).then(function() {
      console.log('Promise-3');
    });

    console.log('js-end');

结果:

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值