Node JS: Невозможно вернуть данные и экспортировать из Asyn c Ax ios Функция - PullRequest
1 голос
/ 13 марта 2020

Это невероятно простой пример, взятый из документации Ax ios и различных постов в блоге:

Все, что я пытаюсь сделать, это вернуть данные из функции asyn c и вызвать ее в другом месте:

В файле: axios.js:

const axios = require("axios");

async function getJson() {
  const url = "https://jsonplaceholder.typicode.com/posts/1";  
  const response = await axios.get(url);
  const data = response.data;
  return data;
}

console.log(getJson());

Затем я запускаю node axios.js

Но вместо того, чтобы выйти из реальных Json данных из API, как ожидалось , это записывает Обещание с: Promise { <pending> }

Этот очень простой пример взят из этого поста: https://scotch.io/tutorials/asynchronous-javascript-using-async-await (выше раздела обработки ошибок).

Есть ли что-то фундаментальное, что я здесь неправильно понимаю? Извините, это невероятно расстраивает, я прочитал несколько постов в блоге и статьи о переполнении стека, и ничто не объясняет это и не дает ответа.

Пока я делаю этот файл, но позже идея состоит в том, чтобы просто импортировать и вызовите эту функцию в другом файле и получите данные, возвращаемые функцией.

Ответы [ 2 ]

2 голосов
/ 13 марта 2020

вам нужно дождаться асинхронного запроса c, например,

import { getJson } from '../file';
async function printJSON() {
  const jsonData = await getJson();
  console.log(jsonData);
}

, потому что здесь get JSON - это асинхронная c функция.

1 голос
/ 13 марта 2020

Ваша функция async, что означает, что она возвращает Promise, как вы узнали, но явно не ожидаете.

Вам необходимо await вызов функции. Например,

console.log(await getJson());

Или вы также можете сделать:

getJson().then(json => {
    console.log(json);
});

Простой пример:


const getAppointment = (appointmentId) => {
    return axios.get("example.com");
};

getAppointment(123).then(response => {

    if (response.status === 200) {
        console.log(response.data); // Do what you want with the JSON
    }

});

...