我正在尝试在错误响应中突破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 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;
}
}
}
我正在通过ImgUploader
函数发送一些图像文件,并通过回调接收响应。我正在尝试通过错误代码监视错误,并将1
分配给变量error
。我现在期望变量error == 1
,但是代码仍然会进入代码块error == 0
的位置。请在哪里我会出错。谢谢。
答案 0 :(得分:0)
您无法在传递给subscribe
的回调中脱离循环。循环结束后将调用回调。
JavaScript代码在单个线程上运行。这就是为什么在您的代码段中首先将执行所有循环迭代的原因。由于error
始终为0,因此error == 0
在所有循环迭代中都为true。 subscribe
的回调仅在循环完成后才能执行。那时error
变量的值改变了,但是没有任何区别,因为循环已经完成。
如果您想了解更多有关浏览器的详细信息,我建议您进行以下讨论:https://www.youtube.com/watch?v=8aGhZQkoFbQ