Promise.all解决多个async/await串行导致的加载缓慢问题

1.问题起源

源于某个线上小程序商城项目改造,项目需求为商城内的广告图及其点击跳转地址需做成可配置功能。
设计思路:将广告图地址与跳转地址数据存于数据库中,通过对应管理后台进行配置。于是为了精确赋值,在源码内便出现多个async/await的串行异步请求,导致负载压力过大时出现加载速度缓慢的问题。

2.解决方案

使用Promise.all()方法将多个async/await封装并发进行,具体如下:

let head_b1,head_b2,head_b3,head_b4;
			Promise.all([
				this.$api.request({
					data_key: 'head_b1'
				}, '/DataImgSys/', 'getValue'),
				this.$api.request({
					data_key: 'head_b2'
				}, '/DataImgSys/', 'getValue'),
				this.$api.request({
					data_key: 'head_b3'
				}, '/DataImgSys/', 'getValue'),
				this.$api.request({
					data_key: 'head_b4'
				}, '/DataImgSys/', 'getValue')
			]).then((result)=>{
				head_b1=result[0].data[0].data_value;
				head_b2=result[1].data[0].data_value;
				head_b3=result[2].data[0].data_value;
				head_b4=result[3].data[0].data_value;
			});	

目前未能找到如直接从封装定义的requese中取对应值的方法,只能先行定义变量后续再做判断或取值。
ps:promise.all需慎用,否则会造成其中一个请求失败而导致程序阻塞的风险,解决方法:封装的async/await中无论success/fail都是用resolve返回data,由返回值进行判断而非使用会导致阻塞的reject

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值