将 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)
}
}
但是,尽管使用了
await
,
makeRequest
仍然返回一个承诺,因此无论如何我最终都必须在我的
printResponse
函数中使用
then
。我使用得不正确吗?
1个回答
“但是,尽管使用了
await
,
makeRequest
仍然会返回一个承诺”
是的,当然会。
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