Я пытаюсь вернуть значение из Promise в асинхронной форме и использовать его в другой функции в другом файле, но у меня есть проблема, потому что мое Promise не возвращает никакого значения.
Когда я пытаюсь открыть console.log ('website'), он сразу возвращает мне неопределенное значение (похоже, что значение вообще не извлекается из служб API). Я не знаю, что я делаю неправильно, я действительно люблю узнавать об Promises и Async-Await, но каждый раз, когда я пытаюсь работать с ними, я все больше запутываюсь.
const dns = require('dns')
const iplocation = require("iplocation").default;
const emojiFlags = require('emoji-flags');
const getServerIPAddress = async (server) => {
return new Promise((resolve, reject) => {
dns.lookup(server, (err, address) => {
if (err) throw reject(err);
resolve(address);
});
});
};
const getServerLocation = async (server) => {
const ip = await getServerIPAddress(server)
iplocation(ip).then((res) => {
const country = emojiFlags.countryCode(res.countryCode)
const result = `Location: ${country.emoji} ${country.name}`
return result
})
.catch(err => {
return `Location: Unknown`
});
}
(async function() {
console.log(await getServerLocation('www.google.com'))
})()
module.exports = {
getServerLocation
}
Для меня действительно важно сначала получить результат из этой функции, а затем использовать его значение в другой функции. Я хотел бы, чтобы вы могли дать мне советы о том, как выполнять задачи асинхронно.