Мой вызов async / await возвращает обещание {<pending>} в моих действиях - PullRequest
0 голосов
/ 05 января 2019

Привет, я новичок в вызовах API и начинаю использовать Axios, чтобы получить простую колоду карт! Я пытаюсь сделать простой вызов axios, и когда я консоль регистрирую свой ресурс, он дает мне то, что мне нужно. Но когда я возвращаю его, он дает мне обещание {}. Из того, что я видел, это происходит потому, что это асинхронное обещание, и обещание становится разрешенным, но поскольку оно асинхронное, оно переходит к следующей строке кода перед возвратом реальных данных? Пожалуйста, поправьте меня, если я ошибаюсь! Некоторое разъяснение было бы потрясающим. Заранее спасибо!

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

мои действия в редуксе

export function getNewDeck() {
    return {
        type: GET_NEW_DECK,
        payload: getData().then( res => {
                 return res.data
            })
    }
}

Затем в моем редукторе, мой action.payload возвращает Обещание {}

1 Ответ

0 голосов
/ 05 января 2019

Обновлено из комментариев

Я считаю, что вам просто нужно изменить свою функцию экспорта, чтобы она также была асинхронной и ожидала получения getData:

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