提问者:小点点

从处于挂起状态的promise返回的值


我正在使用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?


共1个答案

匿名用户

你有两个多选择,你可以返回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
}