Я хочу иметь возможность сделать вызов 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;
}
}