【问题标题】:Is there a way to successfully loop an Angular service call有没有办法成功循环 Angular 服务调用
【发布时间】:2021-03-29 10:08:47
【问题描述】:

如何才能成功运行以下代码?

onSubmit() {

    let pdfData = [
      {
        field_name: 'data.Date',
        value: this.freshDeskData.date,
        placeholder: '',
        page_no: 1,
      },
      {
        field_name: 'data.Fullname',
        value: "Bob Jones",
        placeholder: '',
        page_no: 1,
      },
    ];

     for(let i=0;i<pdfData.length;i++){
       this.signHub.addPDFInfo(pdfData[i]).subscribe((data) => {
         this.responseData = data[i]
       });
    }
  }

添加 PDF 服务:

 addPDFInfo(pdfInfo): Observable<PDFInfo> {
    return this.http.put<PDFInfo>(
      `${environment.apiUrl}/api/workflow/add-text-block?package_ID=${this.package_ID.data.package_id}&current_Document_ID=${this.current_Document_ID.data.documentid}`,
      pdfInfo
    );

}

该服务旨在循环遍历 JSON 对象并发布有关所选项目的信息,以填充 PDF 文档上的相关字段。但是,只有一个字段通过循环填充。另一个仍然是空的。

【问题讨论】:

    标签: json angular for-loop


    【解决方案1】:

    您可以通过使用 RxJs merge-operator 来实现这一点,例如:

    onSubmit() {
    
        let pdfData = [
          {
            field_name: 'data.Date',
            value: this.freshDeskData.date,
            placeholder: '',
            page_no: 1,
          },
          {
            field_name: 'data.Fullname',
            value: "Bob Jones",
            placeholder: '',
            page_no: 1,
          },
        ];
    
         const requests = [];
         for(let i=0;i<pdfData.length;i++){
           requests.push(this.signHub.addPDFInfo(pdfData[i]));
         }
         merge(...requests).subscribe((data) => {
             this.responseData = data[i]
           })
      }
    

    当然,您需要合并每个“下一个结果”的结果(您当前分配给 this.responseData)。解决该问题的候选人可能是reduce-operator

    但是,如果不了解更多代码库,就很难给出准确的答案。

    【讨论】:

    • 这里的data[i] 中的i 是什么? TBH 这个问题也不清楚。
    • 哎呀,我想我复制/粘贴太多了。是的,那是关于我建议研究使用reduce-operator 的部分。我只看到两个动作之一,将多个响应减少为一个,或者将它们附加到数组/对象结构中。
    猜你喜欢
    • 2017-08-04
    • 2019-08-24
    • 1970-01-01
    • 2017-08-31
    • 2023-03-04
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多