【问题标题】:Using ForkJoin with map in post request - angular 8在发布请求中使用带有地图的 ForkJoin - 角度 8
【发布时间】:2020-10-26 04:45:38
【问题描述】:

我有一个发送许多请求的模块,顺序如下:

第一个请求保存大部分数据并返回将在其他请求中发送的 Id。 在我的 .ts 文件中:

  ngOnInit(): void {
    this.datosOferta = this.fb.group({
      ...
      domicilio_empleo: ['option1'],
      conocimiento: this.fb.array([]),
      experiencia: this.fb.array([]),
   });
   this.conocimiento.push(this.fb.control(null));
   .... // more data pushed to this 2 arrays + more data
 }

get conocimiento() {
    return this.datosOferta.get('conocimiento') as FormArray;
  }

save() {  
   let dataPost = {...this.datosOferta.value};
   this.service.save1(dataPost).subscribe((res: any)=>{
        if(res.result) {
          this.service.setId(res.id); 
          
         // **** I have 2 input arrays that need to do this map
          this.conocimiento.value.map( (x, idx) => {
            let _idiomaObj = {
              idOferta: this.service.id,
              idIdioma: this.datosOferta.controls.idiomaComponent.value[idx],
              idIdiomaCert: this.datosOferta.controls.certificado.value[idx],
            }
            this.service.save(_idiomaObj).subscribe( respuesta => {
              console.log(respuesta)
            })
          })

          this.service.anotherSave(data).subscribe( res => { console.log(res) }

          // if all are succes 
          this.router.navigate(['/next-page']);

我需要等到所有地图和其他功能成功结束才能运行到下一页,但我不确定如何将此地图与 ForkJoin 混合,非常欢迎任何想法。

【问题讨论】:

    标签: angular rxjs fork-join


    【解决方案1】:

    类似

    const requestsArray = this.conocimiento.value.map((x, idx) => {
        const _idiomaObj = {
            idOferta: this.service.id,
            idIdioma: this.datosOferta.controls.idiomaComponent.value[idx],
            idIdiomaCert: this.datosOferta.controls.certificado.value[idx],
        }
    
        return this.service.save(_idiomaObj);
    });
    
    const anotherRequest = this.service.anotherSave(data);
    
    forkJoin([...requestsArray, anotherRequest]).subscribe(results => {
        console.log(results);
        this.router.navigate(['/next-page']);
    });
    

    应该做的工作。

    【讨论】:

      猜你喜欢
      • 2019-06-24
      • 2016-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 2016-01-12
      相关资源
      最近更新 更多