阅读量:0
起先是因为一段代码:
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.count returnSchoolInfoList.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.count returnSchoolInfoList.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) }
并且等待异步完成后,正确赋值了!