axios 相同的情况,但结果不同,我认为Try语法可能是原因[duplicate]

z3yyvxxp  于 2022-11-23  发布在  iOS
关注(0)|答案(1)|浏览(128)

此问题在此处已有答案

How do I return the response from an asynchronous call?(44个答案)
昨天关门了。
我在创建应用程序的过程中遇到了axios错误。
下面的代码运行良好。在第一个映像中,console.log输出res.data。

let categoryId = ''

axios.get('/api/max')
    .then((res) => {
        console.log(res.data) // image part
        categoryId = res.data.id
    })
    .catch((err) => {
        console.log('ssssssuuuuu')

    })

('api/max')返回具有最大ID的类别。

下面的代码不能很好地工作。console.log(res)输出正确,但console.log(res.data)输出未定义。

try {
    const res = axios.get('/api/max')
    console.log(res)
    console.log(res.data) // undefined
    categoryId = res.data.id
    console.log('a')
} catch (err) {
    console.log(err.message)
}

什么原因未定义?我谷歌了一下,但我不知道原因。
很抱歉我的英语不是很好,谢谢你的帮助。

qoefvg9y

qoefvg9y1#

您应该在使用console.log之前使用await axios.get('/api/max'),因为它是一个异步调用。(您也可以使用.then,但它不太友好)
当然,在使用await时,不要忘记将函数 Package 到async中。
另外,在使用console.log时要记住这个怪癖。更喜欢使用Vue devtools来检查页面上的当前状态。
总的来说,我建议始终使用async/await而不是.then
下面是一个很好的文档:https://javascript.info/async-await

相关问题