Promise.resolve()执行结果:为什么是先1后2,而不是先2后1?

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}
阅读 1.3k
1 个回答

因为是p.then先被加入的微任务,first().then是稍后加入的微任务,所以p对应的resolve(1);先出结果

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题