js async await真没看出哪有问题?

下面的代码提示错误:看了半天真没看出有什么错误。
image.png

<script setup lang="ts">
省略。。。
const getTopData = async () => {
  console.log("进来了")
  const res=await analyseApi.getTopData(data.topFilter).catch(e=>{
    ElMessage.error(e)
  })
    。。。
}
const getAllApi = async () => {
  await Promise.all([getRightOne(),getRightThree(),getTopData()])
}

onMounted(async ()=>{
 await getAllApi()
})
阅读 1.9k
5 个回答

报错说了呀: 不能从undefined读取属性catch
image.png
就是说analyseApi.getTopData(data.topFilter)返回的并不是一个Promise对像而是undefined, 看一下这个方法有什么问题

而且捕捉错误用 try { } catch () {} 比较多

const res=await analyseApi.getTopData(data.topFilter).catch(e=>{
    ElMessage.error(e)
  })


// 等效于

const res=await analyseApi.getTopData(data.topFilter)

res.catch(e=>{
    ElMessage.error(e)
})

// 问题就出在 res 为 undefined 了。

看看analyseApi.getTopData()是否返回的promise

大概率analyseApi.getTopData(data.topFilter)的返回值不是一个promise,所以没法继续.catch

这里async、await不能直接用catch(),需要要用try{ ... } catch(err) { ... } 包裹

const getTopData = async () => {
  console.log("进来了")
  const res=await analyseApi.getTopData(data.topFilter).catch(e=>{
    ElMessage.error(e)
  })
    。。。
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题