js事件执行机制

1.事件轮询

执行一个宏任务,执行并清空所有的微任务, 进入下一个事件循环(执行一个宏任务,执行并清空所有的微任务)

2.宏任务和微任务

异步队列中包括:微任务(micro-task) 和 宏任务(macro-task)

微任务包括: process.nextTick ,Promise ( process.nextTick 为 Node 独有)

宏任务包括: script , setTimeout ,setInterval ,setImmediate ,I/O ,UI rendering

Tips:

微任务优先级高于宏任务的前提是:同步代码已经执行完成。因为 script 属于宏任务,程序开始后会首先执行同步脚本,也就是script 。
Promise 里边的代码属于同步代码,.then() 中执行的代码才属于异步代码。

setTimeout(function () {
  console.log(" set1------5");
  new Promise(function (resolve) {
    resolve();
  }).then(function () {
    new Promise(function (resolve) {
      resolve();
    }).then(function () {
      console.log("then4-------7");
    });
    console.log("then2------6 ");
  });
});

new Promise(function (resolve) {
  console.log("pr1----1");
  resolve();
}).then(function () {
  console.log("then1----3");
});

setTimeout(function () {
  console.log("set2-----8");
});

console.log('2--------2');

new Promise(function (resolve) {
  resolve();
}).then(function () {
  console.log("then3----4");
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值