在 Angular 6 中按顺序执行 http 请求

Wav*_*ter 2 observable typescript angular angular6

我需要依次向服务器发送多个 HTTP PUT 请求(在完成前一个请求后才开始下一个请求,请求的数量不固定)。如果我使用以下源代码,将发送所有请求

 `listURL.forEach(url => {
    const req = new HttpRequest('PUT', url, formData, { reportProgress: true});
    httpClient.request(req).subscribe(event=>{});
  });`
Run Code Online (Sandbox Code Playgroud)

反正有顺序执行请求吗?

Igo*_*gor 5

您可以使用 async/awaitPromise来简化此操作。使用将可观察对象转换为承诺toPromise()

async doSomethingAsync() {
    for(let url of listURL) {
        const req = new HttpRequest('PUT', url, formData, { reportProgress: true});
        const result = await httpClient.request<ModelHere>(req).toPromise();
        // do something with result
    }
}
Run Code Online (Sandbox Code Playgroud)

有关 async/await 的更多信息,另请参阅此优秀答案并滚动到标题ES2017+: Promises with async/await