let promise = new Promise(function(resolve, reject) {
console.log('Promise');
resolve();
});
setTimeout( ()=>{
console.log(1)
},0)
setTimeout( ()=>{
console.log(2)
},0)
let promise2 = new Promise(function(resolve, reject) {
console.log('Promise2');
resolve();
});
promise2.then(function() {
console.log('resolved.2');
});
promise.then(function() {
console.log('resolved.');
});
console.log('Hi!');
输出顺序如下:
Promise
Promise2
Hi!
resolved.2
resolved.
1
2
注:上面代码中,Promise 新建后立即执行,所以首先输出的是Promise。然后,then方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行,如果是多个promise将加入队列按顺序执行,所以resolved.2,resolved最后输出(如果没有setTimeOut())。setTimeout定义的将会在脚本的最后输出,多个setTimeout同样会加入队列,按顺序执行。