一、案例效果
期望if判断条件里的两个promise 都同时执行完成
二、 初始代码案例
const formatDetail = async (fnArgsJsonParams: MapLogicType) => {
if (fnArgsJsonParams?.targetFeatureName) {
const resDetailData = await formatFeatureInfo(fnArgsJsonParams.targetFeatureName)
targetParamsObj.value = { ...resDetailData }
console.log('1111111111')
$emit('targetFeatureCallback')
}
if (fnArgsJsonParams?.inputFeatureName) {
inputResultObj.value = await formatFeatureInfo(fnArgsJsonParams.inputFeatureName)
console.log('2222222222')
}
}
可以使用Promise.all来确保两个if语句中的异步操作都执行完毕。以下是修改后的代码
const formatDetail = async (fnArgsJsonParams: MapLogicType) => {
const promises = []
if (fnArgsJsonParams?.targetFeatureName) {
const targetFeaturePromise = formatFeatureInfo(fnArgsJsonParams.targetFeatureName).then(resDetailData => {
targetParamsObj.value = { ...resDetailData }
console.log('1111111111')
$emit('targetFeatureCallback')
})
promises.push(targetFeaturePromise)
}
if (fnArgsJsonParams?.inputFeatureName) {
const inputFeaturePromise = formatFeatureInfo(fnArgsJsonParams.inputFeatureName).then(resDetailData => {
inputResultObj.value = resDetailData
console.log('2222222222')
})
promises.push(inputFeaturePromise)
}
await Promise.all(promises)
}
这样,Promise.all会等待所有的Promise都完成后再继续执行。