在 post 请求中将 ForkJoin 与地图结合使用 - angular 8

Using ForkJoin with map in post request - angular 8

我有一个发送很多请求的模块,顺序是这样的:

第一个请求保存大部分数据和 returns 将在其他请求中发送的 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 混合使用,欢迎提出任何想法。

类似

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']);
});

应该完成这项工作。