JavaScript之异步/等待有哪些新语法

  介绍

这期内容当中小编将会给大家带来有关JavaScript之异步/等待有哪些新语法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

受到的启发,我们的贝宝团队不久之前将服务器端数据库迁移到了异步/等待上。我想要和你们分享一下我的经验。

首先我们先来了解两个术语:

    <李> <强>异步函数 <李> <强>等待关键词

你们总是将异步和等待放在一起说,但是你需要知道的是,它们是两个不同的东西。对于异步函数和等待关键词,你需要了解的是,他们从某种程度上来说当然是有一定关联的,但是在没有等待的情况下,异步函数依然可以使用。


<强>

当你用异步关键词创建一个函数的时候,这个函数永远都会返回一个承诺。当你在异步函数内部进行返回的时候,它会用一个承诺包裹你的值。

//这是一个异步函数
  异步函数getNumber () {
  
  实际上返回4//返回一个承诺
  }//使用承诺相同的功能
  函数getNumber () {
  
  返回Promise.resolve (4)
  
  }

除了将你的返回转换为承诺之外,异步函数还有一个特别之处,那就是它是唯一一个让你使用等待关键词的地方。

等待让你可以暂停异步函数的执行,直到它受到了一个承诺的结果。这让你可以写出按照执行顺序显示的异步代码。

//异步函数来显示用户数据
  异步函数displayUserData () {
  
  让我=等待取回(& # 39;/用户/我# 39;)
  
  console.log(我)
  
  }//基于承诺的等价的
  函数displayUserData () {
  
  返回获取(& # 39;/用户/我# 39;),然后(函数(我){
  
  console.log(我)
  
  })
  
  })

等待允许你在不需要回调的情况下写异步代码。这样做的好处是让你的代码可读性更高。而且等待可以与任何承诺兼容,而不仅仅是用异步函数所创建的承诺。

因为异步函数也是一个承诺,当你在代码中放入一个异步函数的时候,它会被吸收,然后作为拒绝承诺被返回。

//基本的错误处理和异步功能
  异步函数getData(参数){
  
  如果是个坏(参数)){
  把新的错误(“这是一个糟糕的param")
  
  }//?
  }//基本基于承诺的错误处理的例子
  函数getData(参数){
  
  如果是个坏(参数)){
  回报的承诺。拒绝(新的错误(“这是一个糟糕的param"))
  
  }//?
  }

当你使用等待调用承诺的时候,你可以用<代码> try/catch代码将其包裹,或是你需要在返回的承诺中添加一个捕获处理程序。

////依赖捕捉任何错误的承诺,他们转发给下(err)或忽略它们
  const catchErrors=fn=比;(res要求下)=比;fn(下)要求,res, .catch(下)
  const ignoreErrors=fn=比;(res要求下)=比;fn(点播,res,下一个).catch(()=比;下())//用我的路线在那些助手功能错误处理
  app.get (& # 39;/sendMoney:数量# 39;,catchErrors (sendMoney))//使用我们ignoreErrors助手忽略任何错误日志的中间件
  app.get (& # 39;/doSomethingElse& # 39;, ignoreErrors (logSomething) doSomethingElse)//知道控制器方法会抛出错误路由器将把它捡起来
  出口异步函数sendMoney(下)要求,res, {
  如果(! req.param.amount) {
  把新的错误(& # 39;您需要提供一个数量! & # 39;)
  
  }等待Money.sendPayment(数量)//不try/catch需要
  
  res.send('你只是发送${量}”)}//基本异步日志中间件
  出口异步函数logSomething(下)要求,res, {//?
  把新的错误(& # 39;你的日志# 39;有点不对劲,)//?
  
  }

此前,我们一直都在用下(err) <代码> 来处理错误。然而,有了<代码>异步/等待>

我用了几个小时的时间对数据库进行了迁移。要想使用这个方式,你唯一需要的,就是对承诺的深刻理解,以及学会如何设置巴贝尔。

上述就是小编为大家分享之异步的JavaScript/等待有哪些新语法了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

JavaScript之异步/等待有哪些新语法