Promise 构造函数的执行时机

分析 Promise 构造函数中的代码执行顺序和状态

问题

下面代码的输出是什么?

const promise1 = new Promise((resolve, reject) => {
  console.log('promise1')
})
console.log('1', promise1);

解答

代码执行过程:

  1. 执行 new Promise,Promise 构造函数中的代码会立即同步执行,输出 'promise1'
  2. 执行 console.log('1', promise1),此时 promise1 没有调用 resolve 或 reject,状态为 pending

输出结果:

'promise1'
'1' Promise{<pending>}

关键点

  • Promise 构造函数中的代码是同步执行的,不是异步
  • 只有 .then().catch() 等回调才是异步执行
  • 未调用 resolve 或 reject 时,Promise 状态保持为 pending