两分钟读懂 Promise 的三种状态

       ES6中提出的一个规范 Promise,常用于处理各种异步操作带来的回调地狱

       但是大量地进行 Promise 的链式调用, 以及复杂的业务逻辑, 又会带来的新的问题,经过一股脑地 Promise...then.. 最后的状态及值分别是什么?

       在这里将它分为两种情况:

1. then 里面对 Promise 的相关结果进行了对应的处理,例:

const success = new Promise((resolve, reject) => {
      resolve(1)
  })
  .then(res => {
      // 处理 resolve
  })
  
  const fail = new Promise((resolve, reject) => {
      reject(1)
 })
 .then(null, res => {
     // 处理 reject
 })

  对于这种情况, 若处理函数执行过程不报错:

    则最后的状态为 fulfilled,值为处理函数的返回值( 若返回值为 Promise 对象,则最后的状态及值与这个 Promise 对象保持一致 );

  若执行过程报错:

    则状态为 rejected,值为报错原因;

 

2. 未对 Promise 的相关结果进行对应处理,例:

const success = new Promise((resolve, reject) => {
    resolve(1)
})
.then(null, res => {
    // 处理 reject
})


const fail = new Promise((resolve, reject) => {
    reject(1)
})
.then(res => {
    // 处理 resolve
})

  对于这种情况,直接忽略 .then 内的代码,最后的状态和值与 new Promise(xxx) 的状态和值一致

  由此可发现,当对 Promise 的结果进行了相应处理的时候,只需关注这个处理过程是否完成,完成则说明这次 Promise 成功,整个状态为 fulfilled,并将值接力下去,未对 Promise 结果处理时,then 内不执行,最后状态和结果不变。

  

 

posted @ 2022-01-24 16:01  .前端实习生  阅读(908)  评论(0)    收藏  举报