Javascript 我的调用async/await在我的操作中返回一个承诺{}

Javascript 我的调用async/await在我的操作中返回一个承诺{},javascript,reactjs,redux,async-await,axios,Javascript,Reactjs,Redux,Async Await,Axios,嗨,我对api调用非常陌生,我开始使用axios来获得一副简单的卡片!我正在尝试做一个简单的axios调用,当我在控制台上记录我的res时,它会提供我所需要的。但当我归还它时,它给了我承诺{}。从我所看到的,这是因为它是一个异步承诺,承诺正在得到解决,但因为它是异步的,它会在返回实际数据之前转到下一行代码?如果我错了,请纠正我!澄清一下就好了。提前谢谢 async function getData() { const result = await axios('https://decko

嗨,我对api调用非常陌生,我开始使用axios来获得一副简单的卡片!我正在尝试做一个简单的axios调用,当我在控制台上记录我的res时,它会提供我所需要的。但当我归还它时,它给了我承诺{}。从我所看到的,这是因为它是一个异步承诺,承诺正在得到解决,但因为它是异步的,它会在返回实际数据之前转到下一行代码?如果我错了,请纠正我!澄清一下就好了。提前谢谢

async function getData() {
    const result = await axios('https://deckofcardsapi.com/api/deck/new/shuffle/?deck_count=1');
    console.log(result.data);
    return await result.data;
}
我在redux的行动

export function getNewDeck() {
    return {
        type: GET_NEW_DECK,
        payload: getData().then( res => {
                 return res.data
            })
    }
}
然后在我的reducer中,我的action.payload返回根据注释更新的承诺{}

我相信您只需要将导出函数更改为异步,并等待getData:

export async function getNewDeck() {
    const payload = await getData();
    return {
        type: GET_NEW_DECK,
        payload
    }
}

查找Thunk了解如何处理异步操作所有标记为异步的函数都会返回一个承诺,异步总是这样做的。您需要等待getData或getData。然后。。。。此外,您不需要return await result.data;中的wait;。result.data不是一个异步调用,所以没有什么可等待的了,我有Thunk作为我的中间件。@MatthewHerbst哦,好吧,这更有意义!我更新了我的示例,让有效负载返回一个。然后因为如果我在它前面放一个wait,它会说wait是一个保留字?但我仍然得到了一个承诺的解决..等待getData.data可能与OPs代码匹配,但实际上getData方法应该已经返回了数据,而不是带有数据属性的内容。是的。非常感谢。