两分钟读懂 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 内不执行,最后状态和结果不变。

  

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM