es6 Promise 执行顺序

'use strict';

setTimeout(function () {
    console.log('three');
  }, 0);
  
  new Promise(function(resolve,reject){
      console.log(1);
    resolve(1);
    console.log(2);
  }).then(function () {
    console.log('two');
  });
  
  console.log('one');

new Promise时除了resolve或者reject(需要then或者catch,或者await)的代码都是在定义时立即执行。而.then,以及.catch会在此次事件循环的末尾执行,而setTimeout会在下次事件开始的时候执行。

'use strict';
new Promise(function (resolve, reject) {
    console.log('Promise');
    resolve();
    new Promise(function (resolve, reject) {
        console.log('Promise>>>');
        resolve();
    }).then(function () {
        console.log('resolved.>>>');
    })
}).then(function () {
    console.log('resolved.');
})

另外可以看下mdn事件循环

猜你喜欢

转载自blog.csdn.net/ozhangsangong/article/details/80779225