首页 > 解决方案 > 在 axios 中使用异步等待

问题描述

我有一个用 axios 调用并返回它的函数:

const makeRequest = () => {
    return axios.get('/data');
}

const printResponse = () => {
    makeRequest()
    .then((response) => {
        console.log(response)
    })
    .catch((error) => {
        console.log(error)
    })
}

我正在尝试使用 async await 来改善这一点并避免使用“then”。

const makeRequest = async () => {
    return await axios.get('/data');
}

const printResponse = () => {
    try {
        const response = makeRequest();
        console.log(response)
    } catch(error) {
        console.log(error)
    }
}

但是,尽管 using await,makeRequest仍然返回一个承诺,所以无论如何我都必须then在我的函数中使用。printResponse我没有正确使用它吗?

标签: javascriptasync-await

解决方案


“但是,尽管使用await,makeRequest仍然返回一个承诺”

是的,当然可以。async/await只是使用 Promises 的语法糖。特别是,任何标记的函数async都将返回一个 Promise - 这是设计使然。

如果你不喜欢 using .then,你可以很容易地使用async/await来使用这个 Promise:

const printResponse = async () => {
    try {
        const response = await makeRequest();
        console.log(response)
    } catch(error) {
        console.log(error)
    }
}

推荐阅读