Promise总共有三种状态,别离是pending,resolved,rejected。
- 状态变动是pending->resolved或者pending->rejected,且状态变动不可逆。
- pending不会触发then或者catch回调函数,resolved会触发then回调函数,rejected会触发catch回调函数。
- 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