开发者问题收集

将 async await 与 axios 结合使用

2020-06-28
437

我有一个使用 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)
    }
}

但是,尽管使用了 awaitmakeRequest 仍然返回一个承诺,因此无论如何我最终都必须在我的 printResponse 函数中使用 then 。我使用得不正确吗?

1个回答

“但是,尽管使用了 awaitmakeRequest 仍然会返回一个承诺”

是的,当然会。 async/await 只是用于处理承诺的语法糖。具体来说,任何标记为 async 的函数都会返回一个承诺 - 这是设计使然。

如果您不喜欢使用 .then ,您可以同样轻松地使用 async/await 来使用此承诺:

const printResponse = async () => {
    try {
        const response = await makeRequest();
        console.log(response)
    } catch(error) {
        console.log(error)
    }
}
Robin Zigmond
2020-06-28