这期内容当中小编将会给大家带来有关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之异步/等待有哪些新语法