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