我的通话async / await在我的操作中返回了一个承诺{<pending>}

时间:2019-01-05 20:23:32

标签: javascript reactjs redux async-await axios

嗨,我对api调用非常陌生,我开始使用axios来获得简单的卡片组!我试图做一个简单的axios调用,当我用控制台记录我的资源时,它给了我所需的信息。但是当我退还它时,它给了我Promise {<未决>}。从我所看到的,是因为它是一个异步promise,并且promise已得到解决,但是因为它是异步的,所以它在返回实际数据之前移到了下一行代码?如果我错了,请纠正我!一些澄清会很棒。预先感谢!

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
            })
    }
}

然后在我的化简器中,我的action.payload返回Promise {<未决>}

1 个答案:

答案 0 :(得分:2)

已根据评论更新

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

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