作家
登录

Async/Await替代Promise的6个理由

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

  •  
  • 这种办法为了可读性就义了语义。除了避免嵌套,并没有其他来由将value1和value2放在一个数组中。

    应用async/await的话,代码会变得异常简单和直不雅。

    1. const makeRequest = async () => { 
    2.  
    3.   const value1 = await promise1() 
    4.  
    5.   const value2 = await promise2(value1) 
    6.  
    7.   return promise3(value1, value2) 
    8.  

    5. 缺点栈

    下面示例中调用了多个Promise,假设Promise链中某个处所抛出了一个缺点:

    1. const makeRequest = () => { 
    2.  
    3.   return callAPromise() 
    4.  
    5.     .then(() => callAPromise()) 
    6.  
    7.     .then(() => callAPromise()) 
    8.  
    9.     .then(() => callAPromise()) 
    10.  
    11.     .then(() => callAPromise()) 
    12.  
    13.     .then(() => { 
    14.  
    15.       throw new Error("oops"); 
    16.  
    17.     }) 
    18.  
    19.  
    20. makeRequest() 
    21.  
    22.   .catch(err => { 
    23.  
    24.     console.log(err); 
    25.  
    26.     // output 
    27.  
    28.     // Error: oops at callAPromise.then.then.then.then.then (index.js:8:13) 
    29.  
    30.   }) 

    Promise链中返回的缺点栈没有给掉足误产生地位的线索。更糟糕的是,它会误导我们;缺点栈中独一的函数名为callAPromise,然而它和缺点没有关系。(文件名和行号照样有效的)。

    然而,async/await中的缺点栈会指向缺点地点的函数:

    Async/Await语法

    1. const makeRequest = async () => { 
    2.  
    3.   await callAPromise() 
    4.  
    5.   await callAPromise() 
    6.  
    7.   await callAPromise() 
    8.  
    9.   await callAPromise() 
    10.  
    11.   await callAPromise() 
    12.  
    13.   throw new Error("oops"); 
    14.  
    15.  
    16. makeRequest() 
    17.  
    18.   .catch(err => { 
    19.  

    20.   推荐阅读

        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)