Ich habe Versprechen Objekte, die arbeiten müssen synchronisieren. Zum Beispiel sollte das zweite Versprechen nicht funktionieren, bevor das erste getan ist. Wenn der erste Ausschuss abgelehnt wird, muss er erneut ausgeführt werden.Wie synchronisiert man Promise-Objekte?
Ich habe ein paar Beispiele implementiert. Das funktioniert gut. getVal rufen, warten 2000 ms, Rückkehr, i ++, rufen Sie wieder 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');
}
}
Aber ich brauche, um eine Reihe von Versprechen Objekte zu steuern. Was ich machen möchte ist, dass ich Daten habe und teile sie in 5 Teile. Nachdem der erste Teil bearbeitet wurde (zB: an den Server geschickt) will ich den zweiten Teil bearbeiten ansonsten muss ich den ersten Teil nochmal bearbeiten.
Dies ist der Prototyp-Implementierung I
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');
}
}
gemacht
Promises Objekte in diesem Code sequentiell arbeitet. Wie kann ich den Code unten beheben, so dass es als erstes Beispiel synchron arbeitet.
Ich kann nicht sagen, ob Sie versuchen, eine ['Promise.all()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) zu machen (alle) oder wenn du deine Versprechen haben willst, mehr von einem Wasserfall zu machen. – zero298
promise.all() funktioniert nicht für mich. Es lehnt die Linie nach einem Versprechen ab. In meiner Situation muss ich alle arbeiten, sonst ist es nutzlos. –
Was wird erwartet, wenn der rekursive Aufruf, der das erste Versprechen zurückgibt, nicht aufgelöst wird? – guest271314