概述
Promise 必须实现 then 方法,状态由等待到完成或等待到拒绝,该流程不可逆向,同时完成或拒接只能触发一次
状态
Promise 有三种状态
- 等待(pending)
- 已完成(fulfilled)
- 已拒绝(rejected)
顺序
then 有两个参数 都是回调函数 第一个回调函数,在 Promise 状态为 resolve 执行,第二个在状态为reject执行。catch方法,相当于then(null,reject)的一个变体
Promise.resolve().then(() => {
console.log('resolve')
})
// => resolve
Promise.reject().then(() => {
console.log('reject')
})
// => reject
Promise.reject().then(() => {
console.log('resolve')
}, () => {
console.log('reject')
}).catch(() => {
console.log('catch reject')
})
// => reject完成和拒接只能执行一次,这条规则同样适用 then 和 catch 处理:
Promise.reject().then(() => {
console.log('resolve')
}, () => {
console.log('reject')
}).catch(() => {
console.log('catch reject')
})
// => reject
Promise.reject().then(() => {
console.log('resolve')
}).catch(() => {
console.log('catch reject')
})
// => catch reject
Promise.reject().then().catch(() => {
console.log('catch reject')
})
// => catch reject
Promise.resolve().then(() => {
console.log('resolve')
}).catch(() => {
console.log('catch reject')
})
// => resolve
Promise.resolve().then().catch(() => {
console.log('catch reject')
})
// => 没有输出
京公网安备 11010502036488号