Javascript中承诺的四种常用方法总结

  


  

  

承诺是JavaScript异步操作解决方案,最近看到项目里不少人用了承诺的库类,比如蓝知更鸟,q, jQuery。Deffered等polyfill承诺方式,使用的时候翻看长长的文档,真心累觉不爱。
  

  

es5发展到现在,节点在0.12版本就已经支持了承诺,在客户端,大部分浏览器也支持了承诺,如果要兼容低版本的浏览器,可以加上es5-shim等polyfill承诺。下面话不多说,来一起看看详细的介绍:

  


  

  

常承诺用场景。

  
      <李>处理异步回调李   <李>多个异步函数同步处理李   <李>异步依赖异步回调李   <李>封装统一的入口办法或者错误处理
      李   
  

<强>
  

  

承诺的基本用法,处理异步回调。

        函数Pro1 () {   返回新的承诺(函数(解决,拒绝){   setTimeout(函数(){   解决(“pro1”)   },300)   })   }//调用   Pro1 ()   不要犹豫(功能(数据){//pro1 console.log(数据)   })   .catch(函数(err) {   把新的错误(错误)   })      


  

  

有时候我们需要发送两个ajax,希望他们能一起把数据返回,就可以采用下面的办法。

        函数Pro1 () {   返回新的承诺(函数(解决,拒绝){   setTimeout(函数(){   解决(“pro1”)   },300)   })   }   函数Pro2 () {   返回新的承诺(函数(解决,拒绝){   setTimeout(函数(){   解决(pro2的)   },300)   })   }//调用   var Pro=Promise.all ([Pro1 (), Pro2 ()));   箴   不要犹豫(功能(数据){   控制台。日志([0]的数据,数据[1])//Pro1 Pro2   })   .catch(函数(err) {   把新的错误(错误)   })      


  

  

有些场景是一个异步依赖另一个异步的返回值的,就可以采用下面的用法。
  

  

比如:用一个订单号异步取到订单详情,再用订单详情里的商品Id获取到商品详情。

        函数Pro1 (orderId) {   返回新的承诺(函数(解决,拒绝){   setTimeout(函数(){   var orderInfo={   orderId: orderId、   productIds:(“123”,“456”)   }   解决(orderInfo.productIds)   },300)   })   }   函数Pro2 (productIds) {   返回新的承诺(函数(解决,拒绝){   setTimeout(函数(){   var产品=productIds.map(函数(productId) {   返回{   productId: productId,   名称:“衣服的   }   })   解决(产品)   },300)   })   }//调用      Pro1 (“abc123”)   不要犹豫(函数(productIds) {   console.log(“商品id ', productIds)   返回Pro2 (productIds)   })   不要犹豫(功能(产品){   console.log(“商品详情”,产品)   })   .catch(函数(err) {   把新的错误(错误)   })      


  

  

错误处理

        函数ErrorHandler (promiseObj rejectOrResOrCallback) {   promiseObj返回。然后(null,函数(err) {   如果(!呃)   })   }      

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

Javascript中承诺的四种常用方法总结