我试图不断循环遍历数组,更新其中的值,并在达到数组长度时开始循环。当前,它阻止了页面的加载,并且使日志记录的速度快于超时值。如何阻止循环阻止页面加载?


  public imgArray: Array<boolean> = [true, false, false, false]

  ngOnInit() {

    this.imgCycle();
  }



  imgCycle() {
    let i = 0;
    while (true) {
      setTimeout(function () { this.imgArray[i] = true }, 10000);
      console.log(this.imgArray)
      if (i == this.imgArray.length) {
        i = 0
        continue;
      }
      i++
    }

  }

最佳答案

尽管true永远不是正确的选择。也许您想看一下setInterval()?这将每隔一段时间运行一次,但每秒可能仍会运行几次。关键是,您必须给浏览器一些时间来做其他事情。
(请原谅,如果我遇到了一些麻烦。我在Angular2中没有太多经验)

public imgArray: Array<boolean> = [true, false, false, false]

    let counter = 0;
    ngOnInit() {
       setInterval(imgCycle, 10000)
    }


    imgCycle() {
            this.imgArray[counter] = true;
            if (counter == this.imgArray.length) {
                counter = 0
                continue;
            }
            counter++
        }

    }

10-06 12:34