【发布时间】:2021-03-28 15:16:03
【问题描述】:
我有一个 for 循环,如果数组的长度为 6,则根据数组的长度进行一次 API 调用,所以会有 6 次 API 调用,问题是异步调用,所以其中一些给了我错误, 我怎样才能对循环内的每个 API 调用等到它完成后再进行另一个调用?
我真的很想用 observables 而不是 promises 来做
这是我打电话的地方
respuestaEncuesta(respuesta:any,idEncuesta:number,idPregunta:number){
return this.http.post(this.API_URL+'api/encuestas/'+idEncuesta+'/preguntas/'+idPregunta+'/respuesta',respuesta,this.httpOptions)
}
这是我的 for 循环,我在函数中所做的唯一事情是发送数组然后执行循环,这是在我的 ts 上,在这里我调用在服务内部执行 API 调用的函数
for (let j=0;j < this.obj.data.length; j++){
this.userService.respuestaEncuesta(this.obj.data[j],this.id,this.auxPreguntas[j])
.subscribe(
res => {
let auxRes:any;
auxRes = res;
if(auxRes.estado == 'success'){
console.log('successful call')
}
},
err => {
console.log(err)
}
)
}
我尝试过这样的 forkjoin,但没有成功,有些请求没有发送
respuesta:any = [];
for (let j=0;j < this.obj.data.length; j++){
this.respuesta.push(this.userService.respuestaEncuesta(this.obj.data[j],this.id,this.auxPreguntas[j]))
}
forkJoin(this.respuesta)
.subscribe(
results => {
console.log(results);
}
)
【问题讨论】:
-
你在寻找这样的东西吗:stackoverflow.com/questions/48593611/…
-
@Zack 不,对不起,我想在没有递归的情况下这样做
标签: angular typescript