概述

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')
})
// => 没有输出