将concatMap结果传递到rxjs中的下一个concatMap

时间:2018-10-23 16:17:27

标签: angular rxjs

您可以看到我有一个方法,该方法按预期工作正常

loadTemplates(configUrl: any, templateId: string): Observable<any> {
    this.getConfiguration(configUrl)
      .pipe(

        concatMap(configResponse =>
          this.getTemplate(
            CONFIGURATION_URL +
              "templates/" +
              configResponse.TemplateSettings.RootTemplate.Path,
            configResponse
          )
        ),
        concatMap(rootTemplate =>
          this.templateEngine.getAllChildTemplates(rootTemplate)       
        ),
        concatMap(childTemplates=>this.templateEngine.createTemplateToRender(childTemplates,""))
      )
      .subscribe(finalresponse=> {

        debugger;
      });

  }
}

执行

  1. getTheConfiguration()=>基于theconfigresponse =>
  2. 致电 getTemplate(basedontheconfigresponse)=> basedntheTemplateresponse =>
  3. 调用getAllChildTemplates(basedntheTemplateresponse)=> 基于childtemplateresponse =>
  4. 调用createTemplate(基于子模板响应,“”)

在第4个要点,我将一个空参数传递给 createTemplate 方法,实际上我必须传递 basednTheTemplateresponse (在代码 rootTemplate 中) 。现在,我正在通过执行 getAllChildTemplates

进行设置来进行调整
getAllChildTemplates(parentTemplate: string) {
    this.currentrootTemplate = parentTemplate;
    var services = this.getChildTemplateServiceInstance(parentTemplate);
    return forkJoin(services);
  }

是否有正确的方法将 rootTemplate 从管道本身传递到下一个 concatMap ?我不确定这是正确的方法。

1 个答案:

答案 0 :(得分:3)

您可以将内部Observable的结果映射到当前响应和上一个响应的数组中:

$("label").contents().filter(function(){ return this.nodeType != 1; }).remove();