Если вы хотите, чтобы один ожидал другого, тогда вы не хотите, чтобы они были отдельными асинхронными Обещаниями.Вместо того чтобы пытаться заставить их быть синхронными, почему бы просто не включить все обещания в один Promise.all, а затем вызывать doStuff1 () и doStuff2 () последовательно в одном и том же обратном вызове .then
?
Сохранить впомните, что отдельные Обещания, которые вы передаете Promise. все начнут выполняться, как только они будут созданы;они не будут ждать, чтобы бежать за Promise.all.Так что это не то же самое, что помещать их в разные группы, изменения, которые разрешаются первыми.
Чтобы пояснить, то, что вы запрашиваете, эквивалентно следующему:
Promise.all([promise1, promise2, promise3, promise4, promise5, promise6]).then(function(values1) {
doStuff1(values1);
doStuff2(values1.slice(3));
});
Если у doStuff1 нет побочных эффектов, которые выхотите произойти до разрешения второго набора обещаний, если первый набор разрешается первым?Это было бы странно и, вероятно, заслуживает рефакторинга, но для этого просто верните второе обещание из обработчика первого и объедините их в цепочку:
Promise.all([promise1, promise2, promise3]).then(function(values) {
doStuff1(values1);
return Promise.all([promise4, promise5, promise6]);
})
.then(function(values) {
doStuff2(values);
});