作家
登录

用Async函数简化异步代码

作者: 来源: 2017-04-19 11:20:13 阅读 我要评论

};  

它不像其它往 async 函数的转换那样简洁,然则确切跟写同步代码一样。如不雅你在这里不捕获缺点,它会延着调用链一向向上抛出,直到在某处被捕获处理。如不雅它一向未被捕获,它最终会中断法度榜样并抛出一个运行时缺点。Promise 以同样的方法运作,只是谢毫不必算作缺点来处理;它们可能只是一个解释缺点情况的字符串。如不雅你不捕获被创建为缺点的拒绝,你会看到一个运行时缺点,不过如不雅你只是应用一个字符串,会掉败却不会有输出。

中断 Promise

拒绝原生的 Promise,只须要应用 Promise 构建函数中的 reject 就好,当然也可以直接抛掉足误——在 Promise 的构造函数中,在 then 或 catch 的回调中抛出都可以。如不雅是在其它处所抛掉足误,Promise 就管不了了。

这里有一些拒绝 Promise 的示例:

  1. function doAsyncOp() { 
  2.  
  3.   return new Promise(function(resolve, reject) { 
  4.  
  5.     if (somethingIsBad) { 
  6.  
  7.       reject("something is bad"); 
  8.  
  9.     } 
  10.  
  11.     resolve("nothing is bad"); 
  12.  
  13.   }); 
  14.  
  15.  
  16.   
  17.  
  18. /*-- or --*/ 
  19.  
  20.   
  21.  
  22. function doAsyncOp() { 
  23.  
  24.   return new Promise(function(resolve, reject) { 
  25.  
  26.     if (somethingIsBad) { 
  27.  
  28.       reject(new Error("something is bad")); 
  29.  
  30.     } 
  31.  
  32.     resolve("nothing is bad"); 
  33.  
  34.   }); 
  35.  
  36.  
  37.   
  38.  
  39. /*-- or --*/ 
  40.  
  41.   
  42.  
  43. function doAsyncOp() { 
  44.  
  45.   return new Promise(function(resolve, reject) { 
  46.  
  47.     if (somethingIsBad) { 
  48.  
  49.       throw new Error("something is bad"); 
  50.  
  51.     } 
  52.  
  53.     resolve("nothing is bad"); 
  54.  
  55.   }); 
  56.  
  57.  

一般来说,最好应用 new Error,因为它会包含缺点相干的其它信息,比如抛出地位的行号,以及可能会有效的调用栈。

这里有一些抛出 Promise 不克不及捕获的缺点的示例:


  1.   推荐阅读

      一文看懂数据可视化:从编程工具到可视化表现方式

    说到可视化,就不得不说一下大年夜数据,毕竟可视化是解决大年夜数据的一种高效的手段,而如今人人都在谈论大年夜数据,大年夜数据 ≠ 稀有据 ≠ 数据量大年夜, 离谱的是,如今就连>>>详细阅读


    本文标题:用Async函数简化异步代码

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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