Вызов API приводит к отложенному обещанию - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь сохранить ответ на вызов API в переменной cat. Когда я выполняю следующий код, консоль регистрирует Promise { <pending> }. Почему это происходит?

const got = require('got');

let dog = async () => {
    try {
        const response = await got('https://api.coinpaprika.com/v1/coins/btc-bitcoin');
        return response;
    } catch (error) {
        console.log(error.response.body);
        //=> 'Internal server error ...'
    }
}

let cat = dog();
console.log(cat)

Ответы [ 2 ]

0 голосов
/ 17 июля 2020
const got = require('got');

let dog = async () => {
    try {
        const response = await got('https://api.coinpaprika.com/v1/coins/btc-bitcoin');
        return await response.json();
    } catch (error) {
        console.log(error.response.body);
        //=> 'Internal server error ...'
    }
}

let cat = dog();
console.log(cat)

В вашем коде response - это обещание. Я ожидаю, что ваши данные о ценах будут возвращены как JSON, поэтому вам нужно добавить return await response.json(), который вместо этого вернет объект JSON, который вы можете распечатать на консоли.

0 голосов
/ 09 июля 2020

dog() вернет обещание, потому что это асинхронная c функция. Вы можете получить такое значение:

let cat = await dog();

OR

dog().then((cat)=>{
  // do something here with the response
})
...