我有需要同步工作的承诺对象。例如,在第一个承诺完成之前,第二个承诺不应该起作用。如果第一个拒绝第一个必须再次执行。
我已经实现了一些示例。这个效果很好。调用getVal,等待2000ms,返回,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 对象按顺序工作。我如何修复下面的代码,以便它作为第一个示例同步工作。