1、异步操作顺序执行
const uploadArray = () => { fileList.value.reduce((previousValue, currentValue) => { return previousValue.then(() => { return upload(currentValue) }).catch(() => { return upload(currentValue) }) }, Promise.resolve()) }
|
const upload = (fileItem) => { return new Promise((resolve, reject) => { uploadFile(fileItem).then((res: any) => { if (res.state == 200) { resolve() } else { reject() } }) }) }
|
reduce()
方法对数组中的每个元素按序执行一个的回调函数,每一次运行回调函数会将先前元素的计算结果作为参数传入
详细参考Array.prototype.reduce()
2、并行执行完所有异步操作后,再继续其他内容
const delPic = (file) => { return new Promise((resolve, reject) => { s3DelImg({ fileName: file.fileName, fileId: file.fileId}).then((res: any) => { if (res.state == 200) { } else { message.error(res.message) } resolve() }) }) };
|
const delList = () => { let delList = [1,2,3] let proResList = delList.map((item: any) => { return delPic(item) }) Promise.all(proResList).then(() => { getImgList() }) }
|
Promise.all()
,对传入的promise组成的数组进行检测,数组中promise全部成功resolve()后,.then()
执行后续操作