Здравствуйте, переполнения,
В настоящее время я работаю над моим проектом, использующим сервер узлов с хранилищем данных Монго.В настоящее время я пишу некоторые функции для заполнения базы данных.
Примерами объектов в базе данных являются «Пользователи», «Классы», «Школьные годы», «Оценки учащихся» и т. Д.
Все функции для создания таких объектов реализованы следующим образом.:
function popUser(users){
chain = [];
users.forEach((v,i,a)=>{
let p = new Promise(function(res,rej){
let newU = new User(v);
newU.save(()=>{
err && rej(err);
res();
});
});
chain.push(p);
});
return chain
}
В оставшейся части моего модуля по заполнению я вызываю такие функции в зависимости от моих потребностей.Порядок, в котором вызываются вышеупомянутые функции, важен, поэтому я не хочу полностью параллельного выполнения конструкторов.
С Обещаниями я мог бы сделать что-то вроде этого:
popUser(users).then(popClasses).then(...). ... .catch((err)=>{})
С Цепями Обещаний я знаю, что могу сделать следующее
Promise.all(usersChain).then(()=>{
//make a new chain for Classes
Promise.all(classesChain).then (()=>{},(err)=>{})
},(err)=>{})
Я думаю, мы можем согласиться с тем, чтостановится довольно трудно читать и понимать, поэтому возникает вопрос:
Есть ли способ достичь тех же результатов с другим, более читаемым синтаксисом?
Редактировать: чтобы быть понятнее, usersChain и cleassesChains - это массивы Promises для создания и вставки некоторых объектов (или объектов) в базу данных.Я не могу сделать одну цепочку, потому что некоторые объекты могут быть вставлены после того, как некоторые другие объекты уже были вставлены.
Редактировать: Подожди, я могу просто позвонить
Promsie.all(populateCountersPromise).then(promise1).then(promise2).catch((err)=>{})