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 并没有消除回调,只是让回调变得可控

上一篇 下一篇

猜你喜欢

热点阅读