【发布时间】:2019-05-23 16:22:01
【问题描述】:
我在异步函数中编写了一段代码,该函数将同时创建四个用户,将它们保存到 MongoDB 并在完成后打印一条消息:
// Concurrently create dummy users
const dummyUserDict = [
"name1",
"name2",
"name3",
"name4"
];
const dummyUserPromises = dummyUserDict.map(async (name) => {
let user = new User({
_id: new mongoose.Types.ObjectId,
username: name
});
return user
.save()
.then((result) => {
console.log('Created user ' + result.username + '!');
});
});
try {
await Promise.all[dummyUserPromises];
} catch(e) {
console.log(e);
}
console.log('Stop here!');
我希望所有dummyUserPromises 在到达代码末尾时都能得到解决,因为我事先用Promise.all 明确地await 他们。当我打开调试器并在console.log('Stop here!') 处设置断点时,我发现它们仍然处于待处理状态:
这是为什么?
【问题讨论】:
-
因为您使用方括号而不是括号?你为什么这样做?
-
你有一个错字是
all()而不是all[]
标签: javascript asynchronous mongoose async-await