Как использовать запрос get для возврата JSON в функцию в NodeJS? - PullRequest
0 голосов
/ 03 мая 2020

Я хочу иметь возможность сделать вызов API, а затем записать информацию в базу данных. Для этого мне нужно создать функцию, которая делает запрос get и возвращает json.

// Desired Function where Dog becomes a value the function can use
const func = () => {
let dog = loadJSON(url);
// do stuff here with dog
}

, используя следующий вопрос: Как вернуть ответ от асинхронного call? Я создал функцию, используя node-fetch, чтобы сделать запрос get и вернуть обещание синхронным способом. Проблема в том, что мне нужно иметь возможность использовать значения обещаний (или их отсутствие) и регистрировать их.

async function loadJSON(url) {
  let res = await fetch(url);
  try {
    // Needs to return JSON but returns Promise <pending>
    return await res.json();
  } catch (e) {
    // Needs to return status but returns Promise <pending>
    return await res.status;
  }
}

Смогу ли я тогда регистрировать данные, используя такую ​​функцию, как эта?

const func = async(url) => {
  await loadJSON(url).then((r) => {
    // Prints the value of r
    console.log(r);
    // Log r --> Would r be logged as its value?
    db.log(r);
    // Returns another Promise <pending>
    return r;
  });
}

Если я использую возвращенное значение в другой функции, придется ли мне вызывать .then () еще раз, чтобы получить значение r, или обещание будет разрешено из fun c ()? Есть ли лучший способ сделать то, что я пытаюсь сделать?

// Example
const func2 = async(url) => {
  let dog = func(url);
  // Would object's json be a json or another promise.
  let object = {
      json = dog;
  }
}

...