@async 报错_async并发、继发、错误处理、顶层await、Promise

async函数内部的await一般情况都是继发运行,如果有多个请求,则后一个只有等前一个完成,才会发请求。

怎么实现请求并发呢?

把await语句放到子函数里面,await只在子函数中起作用,不会阻塞父函数

比如用map,forEach循环,把await放到循环体里面,await就放到子函数里面了

请求并发后怎么顺序输出结果呢

前面通过map返回了一个promise数组

可以用for循环,每个promise来一次await

await难点在于错误处理

async函数会返回Promise对象,async内部抛出的错误(包括await语句执行出错,或者其它js语句报错)会导致async返回的Promise被reject,reject的参数就是报错信息,并且async函数会立即结束执行。

如果希望某个await语句报错不影响后续执行,可以对这些await语句做好错误处理,这样错误信息就不会往外传递了,方式有2种,1 用try-catch代码块包裹await语句 2 await语句后面的Promise要加上catch函数

顶层await

这个可以用来模拟ajax的同步请求

编码规范

no-return-promise,no-return-await

如果你可以直接返回一个值,你不需要把它包在 Promise.resolve 里,async 函数本身就帮你做了,也不需要return await asyncFn,直接return asyncFn即可

ES6 入门教程​es6.ruanyifeng.com 张振衣:async await 代码风格指南​zhuanlan.zhihu.com
abe0cc3b908f7ef49aee76dd7e57999c.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值