【发布时间】:2018-10-13 00:14:59
【问题描述】:
好吧,我在理解 nodejs 中的 async/await、Promises 等如何工作时遇到了麻烦,这是我第一次使用异步语言进行编程。
我在这里尝试做的基本上是从猫鼬模型“SecSolution”中选择一个随机条目。目前,当 arr 返回时,它是空的,并且在打印顶部的调试之前打印底部的调试消息。 我只希望函数在获得值后返回“arr”。
async function getRandomCardIds(deckIdentifier, cardCount) {
let arr;
switch (deckIdentifier) {
case 102:
await SecSolution.count().exec(async function (err, count) {
let promises = [];
var random = Math.floor(Math.random() * count);
for (let i = 0; i < 2; i++) {
promises.push((await SecSolution.findOne().skip(random).lean())._id);
}
arr = await Promise.all(promises);
debug("This gets printed second" + arr);
});
break;
}
debug("this gets printed first");
return arr;
}
提前致谢!
【问题讨论】:
-
你确定
random不应该在循环内吗? -
是的,你是对的,还没有注意到,因为它没有返回任何东西:)
标签: javascript node.js asynchronous mongoose promise