Я написал фрагмент кода внутри асинхронной функции, которая должна одновременно создать четырех пользователей, сохранить их в 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
должно быть решено при достижении конца кода, как я явно await
их с Promise.all
заранее.Когда я включаю отладчик и устанавливаю точку останова на console.log('Stop here!')
, я нахожу, что все они все еще ожидают:
![enter image description here](https://i.stack.imgur.com/XVLez.png)
Почему это так?