在 for 循环中将数据传递给下一个请求

Pass data to next request in for loop

我有一个带有 param 的图片上传请求。我想将第一个请求的响应发送到 for 循环内的所有下一个请求。

for (let i = 0; i < e.target.files.length; i++) {
  this.http.uploadImages(e.target.files[i], 'UploadImage', this.postId).subscribe((res:any)=>{
    if(res.status == true){
      this.postId = res.data.post_id; // i want to pass this postId to All other Requests. 
      this.userImages.push({ img: res.data });
    }
  })
}

在 for 循环之前创建新变量并存储响应中的 postId。比请求检查这个变量。如果为空 - 跳过,如果没有 - 发送

以下代码段将依次执行每次上传,每次都更新 this.postId 值。使用箭头函数 this 上下文被保留。

(如果您的 this.http.uploadImages 方法已经 returns 一个 promise,您不需要实例化一个新的)

const upload = async () => {
    for (let i = 0; i < e.target.files.length; i++) {
        await new Promise((resolve, reject) => {
            this.http
                .uploadImages(e.target.files[i], 'UploadImage', this.postId)
                .subscribe((res: any) => {
                    if (res.status) {
                        this.postId = res.data.post_id;
                        this.userImages.push({img: res.data});

                        resolve();
                    } else {
                        reject();
                    }
                });
        });
    }
};