【问题标题】:Javascript : setInterval in a while?Javascript:setInterval 一会儿?
【发布时间】:2014-10-02 01:48:59
【问题描述】:

你能告诉我我的代码有什么问题吗?

while(buttonPressed) {

 setInterval(function () {

    food = food + farms + (farmers/2);
    updateFood();


  }, 1000);

}

我的食物价值会根据几个因素(农场、农民)自动增加、增加或减少。 它在没有循环的情况下运行良好,但出于某种原因,只有在我按下此按钮后才能执行此功能,这是我的问题。

我在控制台上检查了,var buttonPressed 默认为 false,在我按下按钮后变为 true,所以它应该可以工作:/我需要你的帮助:D

谢谢大家的回复:)

【问题讨论】:

  • 您的代码应该在页面加载时运行还是仅在按下按钮时运行?
  • 您需要无限期地运行它还是只运行一次?
  • 我需要它在我按下按钮时启动,然后它会无限期地运行。但是当我的页面加载时它不应该运行

标签: javascript loops while-loop setinterval increment


【解决方案1】:

你有一个无限循环,它(尽可能快地)重复启动函数的间隔。

听起来您实际上想要一个在变量更改时被清除的间隔。即类似:

  var myInterval = setInterval(function () {
    if (!buttonPressed ) {
        clearInterval(myInterval);
        return;
    }
    food = food + farms + (farmers/2);
    updateFood();
  }, 1000);

【讨论】:

  • 除非updateFood() 可以花费超过 1000 毫秒来执行(或者是异步操作),否则此方法有效。最好使用setTimeout()并递归调用函数。
猜你喜欢
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多