Почему Promise { }?
Вот то место, где я вызываю асинхронную функцию:
module.exports.run = async (bot, message, args) => {
message.channel.send('pong!');
let data = "";
let ref = chillbotDBWork.newRef(`/${message.author.id}`);
data = await chillbotDBWork.readData(ref).then(result => {
console.log(result);
});
console.log(data);
};
А вот сама эта функция:
exports.readData = async function(ref) {
let data;
await ref.on("value", function(snapshot) {
if(snapshot.val()) data = snapshot.val();
});
return data;
};
При выполнении кода выводится Promise { <pending> }. Как это обрабатывать? Как из промиса получить данные?
Ответы (1 шт):
Автор решения: HTMLProgrammer
→ Ссылка
Как-то так
exports.readData = function(ref) {
return new Promise((resolve, reject) => {
ref.on("value", function(snapshot) {
if(snapshot.val())
resolve(snapshot.val());
else
reject('No data');
});
};
module.exports.run = async (bot, message, args) => {
message.channel.send('pong!');
let data = "";
let ref = chillbotDBWork.newRef(`/${message.author.id}`);
data = await chillbotDBWork.readData(ref);
console.log(data);
};