我正在使用axios在React应用程序中返回API数据。基于此指导,我创建了此功能:
function axiosGet(itemid) {
const promise = axios(withAuth({
url: `${apiUrl}/items/?itemid=${itemid}`
}))
const dataPromise = promise.then((response) => response.data)
return dataPromise
}
和这段代码来调用它:
const getData = (theitemid) => {
const itemdata = axiosGet(theitemid)
.then(data => {
console.log(data.length); // correctly prints the value I want
return data.length
})
.catch(err => console.log(err))
console.log(itemdata) // at this point, itemdata is: Promise {<pending>}
return itemdata
}
我希望getData
返回从axiosGet
返回的解析值。
但它不是被解决,而是处于待处理状态。
有什么方法可以让我在问题真正解决之前不返回< code>itemdata?
你有两个多选择,你可以返回promise或等待结果
const getData = async (theitemid) => {
const itemdata = await axiosGet(theitemid)
.then(data => {
console.log(data.length); // correctly prints the value I want
return data.length
})
.catch(err => console.log(err))
console.log(itemdata) // at this point, itemdata is: Promise {<pending>}
return itemdata
}