Ваша первая версия не проходит до конца .Сделайте это:
const populateUsers = done => {
User.remove({}).then(async () => {
const userOne = new User(users[0]).save();
const userTwo = new User(users[1]).save();
await Promise.all([userOne, userTwo]);
const usersProm = await done();
return usersProm;
});
};
Нет никакой разницы, просто код без этих обратных вызовов then
несколько проще для чтения.
Вы можете даже применить его к внешней функции:
const populateUsers = async () => {
await User.remove({});
const userOne = new User(users[0]).save();
const userTwo = new User(users[1]).save();
await Promise.all([userOne, userTwo]);
const usersProm = await done();
return usersProm;
};
Теперь populateUsers
возвращает обещание вместо undefined
.
Как указано в комментариях: вы получаете ошибку, потому что populateUsers
возвращает обещание и принимает done
Аргумент обратного вызова, хотя ожидается один из них, а не оба.