Promise 的基本使用
2020-08-10 本文已影响0人
bestCindy
const pro = new Promise((resolve, reject) => {
// 未决阶段的处理
// 通过调用 resolve 函数将 Promise 推向已决阶段的 resolve 状态
// 通过调用 reject 函数将 Promise 推向已决阶段的 reject 状态
// resolve 和 reject 均可以传递最多一个参数,表示推向状态的数据
});
pro.then(data => {
// 这是 thenable 函数,如果当前的 Promise 已经是 resolve 状态,该函数会立即执行
// 如果当前是未决阶段,则会加入到作业队列,等待到达 resolve 状态后执行
// data 为状态数据
}, err => {
// 这是 catchable 函数,如果当前的 promise 已经是 rejected 状态,该函数会立即执行
// 如果当前是未决节点,则加入到作业队列,等待到达 rejected 状态后执行
// err 为状态数据
});
细节
1、未决阶段的处理函数是同步的,会立即执行
2、thenable 和 catchable 函数是异步的,就算是立即执行,也会加入到事件队列中等待执行,并且,加入的队列是微队列
3、pro.then 可以只添加 thenable 函数,pro.catch 可以单独添加 catchable 函数
4、在未决阶段的处理函数中,如果发生未捕获的错误,会将状态推向 rejected,并会被 catchable 捕获
5、一旦状态推向了已决阶段,无法再对状态做任何更改
6、Promise 并没有消除回调,只是让回调变得可控