У меня есть объекты обещания, которые должны работать синхронно. Например, второе обещание не должно работать до того, как будет выполнено первое. Если первый отклоняет первый, его нужно выполнить снова.
Я реализовал несколько примеров. Этот работает хорошо. вызовите getVal, подождите 2000 мс, вернитесь, i++, снова вызовите getVal .....
getVal() {
return new Promise(function(resolve, reject) {
setTimeout(function(){ resolve(19) }, 2000);
});
}
async promiseController(){
for(var i =0;i<5;i++)
{
var _val = await this.getVal()
console.log(_val+'prom');
}
}
Но мне нужно контролировать массив объектов-обещаний. Что я хочу сделать, так это то, что у меня есть данные, и я разделил их на 5 частей. После того, как первая часть обработана (например: отправлена на сервер), я хочу обработать вторую часть, иначе мне придется снова обрабатывать первую часть.
Это реализация прототипа, которую я сделал
getVal() {
return new Promise(function(resolve, reject) {
setTimeout(function(){ resolve(19) }, 2000);
});
}
async promiseController(){
var proms=[]
for(var i =0;i<5;i++)
{
proms.push(this.getVal())
}
for(var i =0;i<5;i++)
{
var _val = await proms[i]
console.log(_val+'prom');
}
}
Обещания объектов в этом коде работают последовательно. Как я могу исправить приведенный ниже код, чтобы он работал синхронно, как в первом примере.
Promise.all()
или если вы хотите, чтобы ваши обещания больше напоминали Водопад. - person zero298   schedule 29.08.2016.then()
, именованные функции, для вызова функции, пока каждый шаг не вернет разрешенное обещание - person guest271314   schedule 29.08.2016