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
发表回复