Promise.resolve()执行结果:为什么是先1后2,而不是先2后1?
const first = () => (new Promise((resolve, reject) => {
console.log(3);
let p = new Promise((resolve, reject) => {
console.log(7);
setTimeout(() => {
console.log(5);
resolve(6);
console.log(p)
}, 0)
resolve(1);
});
resolve(2);
p.then((arg) => {
console.log(arg);
});
}));
first().then((arg) => {
console.log(arg);
});
console.log(4);
//3
//7
//4
//1 ->2?
//2 ->1?
//5
//Promise{<resolved>: 1}
因为是p.then先被加入的微任务,first().then是稍后加入的微任务,所以p对应的resolve(1);先出结果