Angular 发生错误时如何跳出循环
我试图在错误响应上打破for循环,并控制错误消息。这是我试过的Angular 发生错误时如何跳出循环,angular,loops,Angular,Loops,我试图在错误响应上打破for循环,并控制错误消息。这是我试过的 var error = 0; var errorMsg; for (let i = 0; i < this.fileArray.length; i++) { if ( this.fileArray[i] != undefined ) { if ( error == 0 ) { const fd = new FormD
var error = 0;
var errorMsg;
for (let i = 0; i < this.fileArray.length; i++) {
if ( this.fileArray[i] != undefined ) {
if ( error == 0 ) {
const fd = new FormData()
fd.append('file', this.fileArray[i], this.fileArray[i].name)
this.data.ImgUploader(fd).subscribe(
res => {
if ( res['code'] != '00' ) { //error occurred. 1 is assigned to var error
error = 1
errorMsg = res['message']
} else {
error = 0
}
}
)
} else {
console.log(errorMsg)
break;
}
}
}
var错误=0;
var-errorMsg;
for(设i=0;i{
如果(res['code']!='00'){//发生错误。1被分配给var error
错误=1
errorMsg=res['message']
}否则{
错误=0
}
}
)
}否则{
console.log(errorMsg)
打破
}
}
}
我正在通过
ImgUploader
函数发送一些图像文件,并通过回调接收响应。我试图通过错误代码查看错误,并将1
分配给变量error
。我现在期望变量error==1
,但代码仍然进入代码块,其中error==0
。请问我哪里会出错。谢谢。在传递给subscribe
的回调中,您无法跳出循环。在循环完成后调用回调
JavaScript代码在单个线程上运行。这就是为什么在您的代码片段中,首先将执行所有循环迭代。由于error
始终具有值0,因此error==0
在所有循环迭代中都是真的。subscribe
的回调只能在循环完成后执行。此时,error
变量的值会发生变化,但由于循环已经完成,因此不会产生任何差异
如果您想了解更多在浏览器中引擎盖下发生的事情,我建议您进行以下讨论:请参阅