Zapisanie danych pobranych przy pomocy axios do zmiennej.

0

Mam moduł w którym chcę pobrać dane, po czym chce je zwrócić do wykorzystania w pliku głównym. Jak to uczynić? W poniższym przykładzie dostaję tylko obietnicę. Zamiast danych.

const axios = require('axios');
const URL = "https://cat-fact.herokuapp.com/facts";

async function a() {
    const data = await axios.get(URL);
    console.log(data);
    return data;
}
const message = a();
module.exports = message;
0

Dostajesz promise, bo wywołałeś funkcję async w synchronicznym kontekście.

W skrócie, tego co chcesz zrobić się nie da zrobić, bo request http chwilę trwa, nie wiadomo czy się skończy za 20 ms czy za 2000ms. Nie możesz więc przypisać żadnej wartości tej zmiennej zanim to się skończy. Więc kodu w takim stanie w jakim teraz jest nie da zrobić, bo wartość zmiennej message możesz ustawić dopiero jak request się skończy, ale przypisanie robisz jak się dopiero zaczyna.

To co możesz zrobić, to albo opakować cały kod w funkcje async, i zrobić const message = await a(), i wyeksportować funkcję. (albo po prostu wyeksportować od razu a). To zadziała pod warunkiem że w module którym ją importujesz też wywołasz ją z kontekstu asynchronicznego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1