在 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']);
});
应该完成这项工作。
我有一个发送很多请求的模块,顺序是这样的:
第一个请求保存大部分数据和 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']);
});
应该完成这项工作。