作家
登录

Async/Await替代Promise的6个理由

作者: 来源: 2017-04-11 08:59:46 阅读 我要评论

return data 
  •  
  •       } 
  •  
  •     }) 
  •  
  • 这些代码看着就头痛。嵌套(6层),括号,return语句很轻易让人认为迷茫,而它们只是须要将最终结不雅传递到最外层的Promise。

    最后一点,也是异常重要的一点在于,async/await可以或许使得代码调试更简单。2个来由使得调试Promise变得异常苦楚:

    1. const makeRequest = async () => { 
    2.  
    3.   const data = await getJSON() 
    4.  
    5.   if (data.needsAnotherRequest) { 
    6.  
    7.     const moreData = await makeAnotherRequest(data); 
    8.  
    9.     console.log(moreData) 
    10.  
    11.     return moreData 
    12.  
    13.   } else { 
    14.  
    15.     console.log(data) 
    16.  
    17.     return data     
    18.  
    19.   } 
    20.  

    4. 中心值

    你很可能碰到过如许的场景,调用promise1,应用promise1返回的结不雅去调用promise2,然后应用两者的结不雅去调用promise3。你的代码很可能是如许的:

    1. const makeRequest = () => { 
    2.  
    3.   return promise1() 
    4.  
    5.     .then(value1 => { 
    6.  
    7.       return promise2(value1) 
    8.  
    9.         .then(value2 => {         
    10.  
    11.           return promise3(value1, value2) 
    12.  
    13.         }) 
    14.  
    15.     }) 
    16.  

    如不雅promise3不须要value1,可以很简单地将promise嵌套铺平。如不雅你忍耐不了嵌套,你可以将value 1 & 2 放进Promise.all来避免深层嵌套:

    1. const makeRequest = () => { 
    2.  
    3.   return promise1() 
    4.  
    5.     .then(value1 => { 
    6.  
    7.       return Promise.all([value1, promise2(value1)]) 
    8.  
    9.     }) 
    10.  
    11.     .then(([value1, value2]) => {       
    12.  
    13.       return promise3(value1, value2) 
    14.  
    15.     }) 

        推荐阅读

        Android Studio jni开发入门——看我就够了!

      至此就成功运行出jni的Hello World了 一、情况设备重要须要设备的就是NDK(Native Development Kit),如今Android studio很便利,可以一键下载: file → setting → 按截图找到如>>>详细阅读


      本文标题:Async/Await替代Promise的6个理由

      地址:http://www.17bianji.com/lsqh/34696.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)