Я искал более старые ответы, но не могу понять, как настроить его для моего конкретного случая использования, также многие ответы кажутся устаревшими.
Консоль Node.js предупреждала об устаревании библиотеки обещаний, поэтому я попытался использовать Bluebird (безрезультатно). Если есть какое-то решение, мне решать, не обязательно быть Синей птицей.
Это мой код:
let shortInt;
count().then(result => shortInt = result).catch(err => console.log(err));
console.log("shortInt " + shortInt);
//doing some other stuff here
И функция, для которой мне нужно дождаться результата:
async function count() {
let answer;
await Url.findOne({}).sort({short_url:-1}).exec(function (err,ur) { if (err) return err; answer = ur.short_url });
console.log("answer " + answer);
return answer;
}
Для console.log (shortInt) я получаю 'undefined', а console.log (answer) всегда печатается в конце, после всех других операций.
Что мне нужно изменить, чтобы shortInt был установлен, прежде чем я продолжу // делать другие вещи.
Я установил mongoose.Promise = require ("bluebird"); чтобы не получить устаревшее предупреждение.