простая машинописная функция с топором ios вызов get не работает - PullRequest
0 голосов
/ 16 апреля 2020

Я учусь делать вызовы http из приложения узла / машинописи. У меня есть следующий метод, используя npm package Ax ios, чтобы сделать http получить вызов к поддельной api конечной точке.

    public GetTrailById(trailId: number) : string {
        console.log("Entered the method.");
        const res = axios.get("https://reqres.in/api/users?page=2")
        .then((res: { data: any; }) => {
            console.log("inside then");
            return "this is good, got response";
        })
        .catch((err: { response: any; }) => {
            console.log("inside catch");
            return "this is not good, inner catch";
        });
        console.log("nothing worked");
        return "nothing worked";
    }

Когда я запустить приведенный выше код, я вижу следующие консольные выходы, но нет консольного вывода ни из блока then, ни из блока catch. Я не понимаю, куда идет управление.

Вывод, который я вижу:

Entered the method.
nothing worked

Что я ожидаю увидеть:

Entered the method.
inside then //or inside catch

Может ли кто-нибудь помочь мне понять, что я я здесь не так делаю?

1 Ответ

0 голосов
/ 16 апреля 2020

Вы присваиваете свое обещание переменной res, но ничего с ней не делаете.

Возможно, вы хотите что-то более похожее на:

async function getTrailById(trailId: number): Promise<string> {
    console.log("Entered the method.");
    try {
      const res = await axios.get("https://reqres.in/api/users?page=2");
      console.log("inside then");
      return res.data;
    } catch {
      console.log("inside catch");
      return "this is not good, inner catch";
    }
}

// ...in some other async function
const trail = await getTrailById(trailId)

Обратите внимание, что я изменил верните тип Promise<string> (это то, что вы хотите здесь, поскольку оно asyn c), и я заставил имя функции начинаться со строчной буквы (camelCase обычно используется для имен переменных и функций в JavaScript / TypeScript).

...