【发布时间】:2019-07-12 07:36:32
【问题描述】:
我很困惑为什么我需要在另一个函数中再次运行 async/await
例子
async function fetchData() {
try {
const result = await axios.get('http://example.com')
return result
} catch(err) {
return err
}
}
// and in another function I need to async await again
// if I want to get the value of fetchData()
// or else it will return pending promise object
function mapData() {
const data = fetchData()
console.log(data) // is a Pending Promise
}
如果我想获取数据而不是 Promise 对象
async function mapData() {
const data = await fetchData() // I still need to await??
console.log(data) // real value
}
我认为如果我已经在 fetchData 函数中异步/等待它已经返回一个值而不是承诺,为什么我需要再次异步/等待以获取 mapData 函数中的实际数据?
【问题讨论】:
-
一个异步函数总是返回一个promise,你不能神奇地让它同步。
-
这里使用
.then()是更理想的选择。 -
您可以从
fetchData中删除async/await,这是不必要的,因为axios返回一个承诺 -
axios.get('http://example.com').then(function(data){ console.log(data); })