Как мы можем вернуть значение из обещания, а не console.log?Если я изменю консоль на return(values[1] - values[0])
.И попробуйте сделать console.log(balance(user))
, он печатает Promise { <pending> }
.
Я не знаю, правильно ли я это делаю, что я пытаюсь сделать, это получить баланс пользователя, вычитая все покупки извсе пополнения / снятия.Без обещаний возвращает значение до завершения запросов к БД.Есть лучшее решение?
function totalPurchases(user) {
return new Promise(function (resolve, reject) {
Purchase.getTotalPurchases(user, function (err, tot) {
if (err) {
// console.log(err);
reject(new Error("Error: 1002"));
// return false;
}
else {
resolve(tot[0].purchases);
}
})
})
}
function totalDW(user) {
return new Promise(function (resolve, reject) {
DepWid.getTotalDepwids(user, function (err, tot) {
if (err) {
reject(new Error("Error: 1003"));
}
else {
resolve(tot[0].depWids);
}
})
})
}
exports.balance = async (user) => {
let promises = [];
promises[0] = totalPurchases(user);
promises[1] = totalDW(user);
Promise.all(promises)
.then(function (values) {
console.log(values[1] - values[0]);
//Return this rather than console.log
})
.catch(function (err) {
console.log(err);
})
}