因此,我正在尝试使用创建循环来执行此操作:

setTimeout(function() {
    console.log("Hey!");

    setTimeout(function() {
       console.log("Hey!");

       setTimeout(function() {
       console.log("Hey!");

       }, 1000);

    }, 1000);

 }, 1000);


所以,我这样尝试了。

for (i = 0; 1 < 3; i++){
    setTimeout(function() {
    console.log("Hey!");
}, 1000);
}


但是,它不起作用。

做一些研究,我注意到这是因为在每个循环中,timeOuts相互增加。我该如何解决?

最佳答案

您必须递归调用超时,因此编写一个函数,该函数接受当前尝试次数的参数。让它执行操作,然后使用trys参数+ = 1调用自身。

您应该传递多次尝试作为保护措施,以便您可以告诉函数如果尝试次数>某个限制,则不要调用自身,以避免无限循环。

就像是:

timedLog(attempts) {
  console.log('Hey!');
  if (attempts > 10) {
    return;
  } else {
    setTimeout(function() { timedLog(attempts + 1); }, 1000);
  }
}


它看起来不再像for循环,但这是相同的原理。

09-10 10:59
查看更多