起先是因为一段代码:
const formatUserInfo = async (id) => {const result = await getUserInfoByIdAPI(id)return result.data.data
}
const getReturnSchoolInfoList = async () => {const result = await getReturnSchoolInfoListAPI(page.value, limit.value)count.value = result.data.data.countreturnSchoolInfoList.value = result.data.data.rows// todo 根据userId 获取用户信息 并与返校信息合并returnSchoolInfoList.value.forEach(item => {const result1 = await formatUserInfo(item.userId)console.log(result1)item.userInfo = result1})console.log(returnSchoolInfoList.value)
}
然后报错: [vite] Internal server error: [vue/compiler-sfc] Unexpected reserved word ‘await’.。
如果去掉 await ,那么由于是异步操作会先输出 returnSchoolInfoList.value,再输出 result1,并且因为赋值的时候并没有获取到result1 的具体值,所以需等待该异步操作完成后再进行赋值。
然后幸好有 Webstorm 的智能提示,让我使用 for…of… 代替 forEach,bug 果然消失了 !
const formatUserInfo = async (id) => {const result = await getUserInfoByIdAPI(id)return result.data.data
}
const getReturnSchoolInfoList = async () => {const result = await getReturnSchoolInfoListAPI(page.value, limit.value)count.value = result.data.data.countreturnSchoolInfoList.value = result.data.data.rows// todo 根据userId 获取用户信息 并与返校信息合并for (const item of returnSchoolInfoList.value) {const result1 = await formatUserInfo(item.userId)console.log(result1)item.userInfo = result1}console.log(returnSchoolInfoList.value)
}
并且等待异步完成后,正确赋值了!