Tengo este código que formatea los parámetros y los envía a la API.
for (let a = 0; a < perfCriteria.length; a++) { const element = perfCriteria[a]; let newObject = Object.assign({}, paramObject) newObject.performanceCriteria = element.performanceCriteriaId for (let b = 0; b < element.performanceIndicators.length; b++) { const element2 = element.performanceIndicators[b]; let newObject2 = Object.assign({}, newObject) newObject2.performanceIndicator = element2.performanceIndicatorId newObject2.numberTarget = element2.divisionTarget ? element2.divisionTarget : "" newObject2.targetDetails = element2.targetDetails for (let c = 0; c < element2.targetDetails.length; c++) { const element = element2.targetDetails[c]; element2.targetDetails[c].individualAccountable = element.individualAccountable.map(function(row){ return row._id }) } divTargetArray.push(newObject2) } } this.DivisionTarget.create(divTargetArray).subscribe(result =>{ console.log('result', result) if(result.success){ this.appComponent.showLoadingIndicator = false; this.router.navigate(['/index/app/performanceManagement/divisionTargets']); this.toastService.openSnackBar(result.message, "success"); }else{ this.appComponent.showLoadingIndicator = false; this.toastService.openSnackBar(result.message, "danger"); } }, error => { this.appComponent.showLoadingIndicator = false; this.toastService.openSnackBar(error, "danger"); });Pero a veces, no esperará a que termine el ciclo For. ¿Hay alguna manera de que pueda esperar a que finalice el ciclo For antes de proceder a enviarlo a la API?
No puedo ver ninguna operación asincrónica en su código, así que creo que se ejecuta línea por línea. Parece que no hay posibilidad de que la suscripción ocurra antes de que finalice el ciclo. ¿Quizás el problema está en otro lugar?