Wie synchronisiere ich Promise-Objekte?

Ich habe Versprechungsobjekte, die synchron arbeiten müssen. Zum Beispiel sollte das zweite Versprechen nicht funktionieren, bevor das erste erledigt ist. Wenn der erste ablehnt, muss der erste erneut ausgeführt werden.

Ich habe einige Beispiele implementiert. Dieses funktioniert gut. call getVal, warte 2000ms, return, i ++, wieder call 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 muss ein Array von Versprechungsobjekten kontrollieren. Was ich tun möchte, ist, dass ich Daten habe und sie in 5 Teile aufteilte. Nachdem der erste Teil verarbeitet wurde (z. B. an den Server gesendet), möchte ich den zweiten Teil verarbeiten, andernfalls muss ich den ersten Teil erneut verarbeiten.

Dies ist der Prototyp, den ich implementiert habe

  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');
  }
}

Promises-Objekte in diesem Code arbeiten nacheinander. Wie kann ich den folgenden Code so korrigieren, dass er als erstes Beispiel synchron funktioniert?