我试图不断循环遍历数组,更新其中的值,并在达到数组长度时开始循环。当前,它阻止了页面的加载,并且使日志记录的速度快于超时值。如何阻止循环阻止页面加载?
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++
}
}
答案 0 :(得分:1)
虽然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++
}
}