promise基础

2022-02-05  本文已影响0人  yueluoxingliu

promise有两个阶段:未决阶段unsettled和已决阶段settled

promise有三种状态:pending(进行中)、resolved(已完成,又称Fulfilled)和rejectd(已失败)

代码:

const pro = new Promise((resolve, reject)=>{

    // 未决阶段的处理

    // 通过调用resolve函数将Promise推向已决阶段的resolved状态

    // 通过调用reject函数将Promise推向已决阶段的rejected状态

    // resolve和reject均可以传递最多一个参数,表示推向状态的数据

})

pro.then(data=>{

    //这是thenable函数,如果当前的Promise已经是resolved状态,该函数会立即执行

    //如果当前是未决阶段,则会加入到作业队列,等待到达resolved状态后执行

    //data为状态数据

}, err=>{

    //这是catchable函数,如果当前的Promise已经是rejected状态,该函数会立即执行

    //如果当前是未决阶段,则会加入到作业队列,等待到达rejected状态后执行

    //err为状态数据

})

说明:

1. 未决阶段的处理函数是同步的,会立即执行

2. thenable和catchable函数是异步的,就算是立即执行,也会加入到事件队列中等待执行,并且加入的队列是微队列

3. pro.then可以只添加thenable函数,pro.catch可以单独添加catchable函数

4. 在未决阶段的处理函数中,如果发生未捕获的错误,会将状态推向rejected,并会被catchable捕获

5. 一旦状态推向了已决阶段,无法再对状态做任何更改

6. Promise并没有消除回调,只是让回调变得可控

上一篇 下一篇

猜你喜欢

热点阅读