javascript - 在 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
我没有正确使用它吗?
解决方案
“但是,尽管使用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)
}
}
推荐阅读
- android - Xamarin Forms webview 不接受或发送网页发送的 cookie
- game-development - GML:instance_create 不起作用,对象没有被放入房间
- c++ - boost::serialization 在通过指针反序列化时如何分配内存?
- node.js - 无法读取未定义的属性“forEach”。NewListItems 是问题所在。虽然似乎无法解决
- javascript - 将 jQuery 函数重写为 Vanilla JS 并优化
- javascript - 如何使用本机反应将数据保存到firebase?
- python-3.x - 如何通过 Python 使用 Selenium WebDriver 在 iframe 中定位元素
- material-ui - 如何将默认字体应用于material-ui上的所有元素?
- c++ - 如何将`__m256i`转换为`int`
- javascript - 为什么价值欧盟公民的输入事件不起作用