发生错误时如何跳出循环

时间:2019-11-30 11:45:26

标签: 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 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的位置。请在哪里我会出错。谢谢。

1 个答案:

答案 0 :(得分:0)

您无法在传递给subscribe的回调中脱离循环。循环结束后将调用回调。

JavaScript代码在单个线程上运行。这就是为什么在您的代码段中首先将执行所有循环迭代的原因。由于error始终为0,因此error == 0在所有循环迭代中都为true。 subscribe的回调仅在循环完成后才能执行。那时error变量的值改变了,但是没有任何区别,因为循环已经完成。

如果您想了解更多有关浏览器的详细信息,我建议您进行以下讨论:https://www.youtube.com/watch?v=8aGhZQkoFbQ