angular - În bucla Promise, cum să aștepți răspunsul cererii?


Încerc să creez un ciclu care trimite cereri.

Totuși, aș dori să aștept să primesc răspunsul la cerere înainte de a trimite următoarea. Cum pot proceda?

 private start(): Promise<string> {
    return new Promise((resolve, reject) => {
      for (let j = 0, p = Promise.resolve(); j < count; j++) {
        p = p.then(_ => new Promise<null>(res =>
          setTimeout(() => {
            if (j === (count - 1)) {
              resolve();
            } else {
              this.http.get();
              res();
            }
          }, 1000)
        ));
      }
    });
  }

Mulțumesc pentru ajutor

Răspuns #1

Mulțumesc pentru că ajuți pe toată lumea. În sfârșit, am scris asta în funcție de răspunsul @Capricorn

      private start(): Promise<string> {
    return new Promise((resolve, reject) => {
      for (let j = 0, p = Promise.resolve(); j < 10; j++) {
        p = p.then(() => new Promise<null>((res) => {
          this.get().then(() => res());
        }));
      }
    });
  }

  private get(): Promise<string> {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        alert('hello');
        resolve();
      }, 3000);
    });
  }

Răspunsul #2

poți încerca așa

async mainFunction () {
for(let i = 0; i < count; i++) {
    await apiCallFunction();
    // other code 
}
}

apiCallFunction() {
 return new Promise((resolve, reject) => {
    this.http.get().subscribe(resp => {
      resolve();
    });
 })
}