Promise总共有三种状态,别离是pending,resolved,rejected。

  1. 状态变动是pending->resolved或者pending->rejected,且状态变动不可逆。
  2. pending不会触发then或者catch回调函数,resolved会触发then回调函数,rejected会触发catch回调函数。
  3. then失常返回resolved,外面有报错返回rejected;catch失常返回resolved,外面有报错返回rejected。

面试题

// 第一题Promise.resolve().then(() => {    console.log(1) //返回 resolved 状态的 promise,不执行catch}).catch(() => {    console.log(2)}).then(() => {    console.log(3)//返回 resolved 状态的 promise})后果为1,3// 第二题Promise.resolve().then(() => {     console.log(1)    throw new Error('erro1') //本来应返回resolved状态的promise,但因为抛出异样,所以返回 rejected 状态的 promise,执行catch}).catch(() => {     console.log(2) // 返回 resolved 状态的 promise,执行then}).then(() => {    console.log(3) // 返回 resolved 状态的 promise})后果为1,2,3// 第三题Promise.resolve().then(() => {     console.log(1)    throw new Error('erro1') // 本来应返回resolved状态的promise,但因为抛出异样,返回 rejected 状态的 promise}).catch(() => {     console.log(2) // 返回 resolved 状态的 promise,不执行catch}).catch(() => {    console.log(3)})后果为1,2