Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 发生错误时如何跳出循环_Angular_Loops - Fatal编程技术网

Angular 发生错误时如何跳出循环

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

我试图在错误响应上打破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;
            }
          }
        }
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
变量的值会发生变化,但由于循环已经完成,因此不会产生任何差异

如果您想了解更多在浏览器中引擎盖下发生的事情,我建议您进行以下讨论:

请参阅