async/await多个函数关联调用
async/await使得异步代码看起来像同步代码
async函数会隐式地返回一个promise,而promise的reosolve值就是函数return的值
Async/Await不需要写.then,不需要写匿名函数处理Promise的resolve值,也不需要定义多余的data变量,还避免了嵌套代码
async声明一个异步函数
await只能在async函数中使用,后面跟一个promise对象
所以在模拟异步调用函数时,函数体内返回promise
async/await缺点
async函数里,无论是Promise reject的数据还是逻辑报错,都会被默默吞掉。所以最好把await放入try{}catch{}中,或者在async返回的promise对象中使用.cache捕获错误。
实现
项目中实现三个不同的接口调用,三个接口是相互关联的,前一个接口的返回值是后一个接口的参数,如果使用Promise实现的话,只能实现异步调用,但是无法相互关联,也就是数据不互通,所以使用async/await实现
- 接口调用的方法独立封装,参数可动态设置
- async声明异步方法,内部使用await关键字调用封装的接口,参数可直接传入
- async/await相当于将Promise异步调用同步化,数据可实现关联
- async/await会默认返回一个Promise对象,在实际调用中使用cache捕获错误
代码实现
<script> //再此使用定时器模拟异步接口的调用 // 异步函数a function a() { return new Promise(resolve => { setTimeout(()=>{ resolve('a') }, 1000) }) } // 异步函数b,关联a参数 function b(a) { return new Promise(resolve => { setTimeout(()=>{ resolve(a+'b') }, 1000) }) } // 异步函数c,关联b参数 function c(b) { return new Promise(resolve => { setTimeout(()=>{ resolve(b+'c') }, 1000) }) } // 同步执行三个关联的异步函数 async function d(){ const da = await a(); const db = await b(da); const dc = await c(db); return dc; } // 实际调用 d().then(res=>{ console.log(res) }).catch(err=>{ console.log(err) }); </script>
总结
以上所述是小编给大家介绍的JS中async/await实现异步调用的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
更新日志
2024年12月27日
2024年12月27日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]