Promise示例

Promise同步处理 异步任务记录

                    //1. 保存设备图片
						var installImgs = [];
						let p1List = [];
						this.baseFormData.installImgs.forEach(img => {
							let p = new Promise((resolve, reject) => {
								uploadFile({
										"filePath": img
									})
									.then(res => {
										installImgs.push(res.data.id);
										resolve();
									}).catch(err => {
										reject();
									});
							})
							p1List.push(p);
						})

						//2. 保存铭牌图片
						var nameplaceImgs = [];
						let p2List = [];
						this.baseFormData.nameplaceImgs.forEach(img => {
							let p = new Promise((resolve, reject) => {
								uploadFile({
										"filePath": img
									})
									.then(res => {
										nameplaceImgs.push(res.data.id);
										resolve();
									}).catch(err => {
										reject();
									});
							});
							p2List.push(p);
						});
						//3. 保存签名图片
						let p3 = new Promise((resolve, reject) => {
							console.log('p3 ing...')
							uploadFile({
								"filePath": this.baseFormData.signImg
							}).then(res => {
								resolve(res.data.id);
							}).catch(err => {
								console.error('保存签名失败', err);
								reject(null);
							})
						});


						//4. 保存设备安装信息
						Promise.all(p1List).then(() => {
							Promise.all(p2List).then(() => {
								p3.then((signImg)=>{
									
									console.log('installImgs', installImgs)
									console.log('nameplaceImgs', nameplaceImgs)
									console.log('signImg', signImg);
									
									this.baseFormData.installImgs = JSON.stringify(
										installImgs);
									this.baseFormData.nameplaceImgs = JSON.stringify(
										nameplaceImgs);
									this.baseFormData.signImg = signImg;
									createInstallInfo2(this.baseFormData)
										.then(response => {
											uni.showToast({
												title: `提交成功`
											})
										})
								})
							})
						})
posted @ 2023-09-06 15:23  赵钱富贵  阅读(6)  评论(0编辑  收藏  举报