首页 > 解决方案 > 在 Promise 循环中,如何等待请求响应?

问题描述

我正在尝试创建一个发送请求的循环。

但是,我想在发送下一个请求之前等待收到请求的答复。我该如何进行?

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

感谢您的帮助

标签: angulartypescript

解决方案


感谢大家的帮助,最后,我根据@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);
    });
  }

推荐阅读