事件循环输出 问题

37 阅读1分钟
console.log('script start');

async function async1() {
  await async2();
  console.log('async1 end');
}

async function async2() {
setTimeout(function() {
    console.log('async2 end');
  }, 0);
}

async1();

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

new Promise(resolve => {
  console.log('promise1');
  resolve();
}).then(function() {
  console.log('promise2');
});

console.log('script end');

script start
promise1
script end
async1 end
promise2
async2 end
setTimeout

console.log('script start');

setTimeout(function() {
  console.log('setTimeout1');
  new Promise(function(resolve) {
    console.log('promise1');
    resolve();
  }).then(function() {
    console.log('promise2');
  });
}, 0);

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

new Promise(function(resolve) {
  console.log('promise3');
  resolve();
}).then(function() {
  console.log('promise4');
});

console.log('script end');
//script start
//promise3
//script end
//promise4
//setTimeout1
//promise1
//promise2
//setTimeout2
console.log('script start');

setTimeout(function() {
  console.log('setTimeout1');
  new Promise(function(resolve) {
    console.log('promise5');
    resolve();
  }).then(function() {
    console.log('promise6');
  });
}, 0);

new Promise(function(resolve) {
  console.log('promise1');
  resolve();
}).then(function() {
  console.log('promise2');
  setTimeout(function() {
    console.log('setTimeout2');
  }, 0);
}).then(function() {
  console.log('promise3');
});

console.log('script end');
//script start
//promise1
//script end
//promise2
//promise3
//setTimeout1
//promise5
//promise6
//setTimeout2
console.log('script start');

async function async1() {
  await async2();
  console.log('async1 end');
}

async function async2() {
    console.log('async2 end');
}

async1();

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

new Promise(resolve => {
  console.log('promise1');
  resolve();
}).then(function() {
  console.log('promise2');
});

console.log('script end');

// script start
// async2 end
// promise1
// script end
// async1 end
// promise2
// setTimeout