map内调异步请求

65 阅读1分钟

需求:

查看详情时,部分字段中又多张图,并需调获取图片接口,然后将图片回显

获取图片

getImageFun(imgPath) {
	return new Promise((resolve, reject) => {
		uni.request({
			url: BASEURL + '/files/uploads/' + imgPath,
			data: {},
			responseType: 'arraybuffer',
			method: 'get',
			header: {
				cookie: uni.getStorageSync('sid') ? 'febersecurityid=' + uni.getStorageSync(
					'sid') : ''
			},
			timeout: 1200000, //120s
			success: (res) => {
				const imgBase =
					`data:image/jpeg;base64,${uni.arrayBufferToBase64(res.data)}`;
				resolve(imgBase);
			},
			fail(res) {
				wx.showToast({
					icon: 'none',
					duration: 3000,
					title: '图片获取失败'
				});
			}
		});
	});
}

map中调异步接口

if (data.Hyzm) {
	this.imgList.Hyzm = data.Hyzm;
	const imgBaseArry = await data.Hyzm.map(async (item) => {
		let imgBase = await this.getImageFun(item);
		return imgBase;
	});
        console.log(imgBaseArry)
}

imgBaseArry 打印结果:

image.png

imgBaseArry 拿到的是一个值为Promise对象的数组,那么我们如何拿到具体的值呢?

this.imgBaseList.Hyzm = await this.getResult(imgBaseArry);
console.log(this.imgBaseList.Hyzm)
getResult(arry) {
	return new Promise((resolve, reject) => {
		Promise.all(arry).then((result) => {
			resolve(result)
		});
	});
},

this.imgBaseList.Hyzm打印结果:

image.png