在循环JavaScript / JQuery中运行函数

时间:2018-04-17 06:00:34

标签: javascript jquery

我有一堆调用另一个函数的函数。我想在无限循环中运行这些函数组,并且不能真正提出逻辑。

我的代码如下所示:

<script>

function runAnim(x,y) {
    //animation code
}

runAnim(a,2);
setTimeout(function() {
    $('#a').fadeOut('fast');
}, 3000);

runAnim(b,4);
setTimeout(function() {
    $('#b').fadeOut('fast');
}, 3000);

</script>

所以我想运行这两个&#39; runAnim&#39;无限循环中的函数。我试过了

while(1) {}

但这会挂断我的浏览器。我尝试实现setInterval方法但不知道如何做到这一点。如果你想我可以发布runAnim(x,y)函数以获得更清晰的信息。

3 个答案:

答案 0 :(得分:3)

更改您的runAnim方法以通过runAnim调用setTimeout,这样您就可以无限循环,同时确保不超过最大堆栈

function runAnim(x,y) {
    //animation code
    if ( y == 2 )
    {
       setTimeout( () => {
           runAnim(x,4);
           $('#a').fadeOut('fast'); //call the fadeout here itself
       }, 3000 );
    }
    else
    {
       setTimeout( () => {
           runAnim(x,2);
           $('#a').fadeOut('fast');
       }, 3000 );
    }
}

答案 1 :(得分:1)

你不需要一个明确的无限循环,你可以让函数一遍又一遍地调用另一个

以下是链接示例:

&#13;
&#13;
[{"index": {"_type": "users", "_index": "listusers", "_id": "1"}}, {"title": "I am in india", "id": "1"}, {"index": {"_type": "users", "_index": "listusers", "_id": "2"}}, {"title": "I am in america", "id": "2"}, {"index": {"_type": "users", "_index": "listusers", "_id": "3"}}, {"title": "I am in japan", "id": "3"}]
&#13;
function fadeOutA() {
  $('#b').fadeIn('fast');
  $('#a').fadeOut('fast', fadeOutB);
}

function fadeOutB() {
  $('#a').fadeIn('fast');
  $('#b').fadeOut('fast', fadeOutA);
}

function stop() {
  $('#a, #b').stop();
}


$('#start').click(fadeOutA);

$('#stop').click(stop);
&#13;
div {
  width: 50px;
  height: 50px;
  float: left;
  margin: 10px;

}

#a {
  background-color: green;
}

#b {
  background-color: blue;
}
&#13;
&#13;
&#13;

答案 2 :(得分:-1)

我建议不要写任何运行无限循环的逻辑,因为这会导致浏览器出现问题。但是,如果您希望它完成如下所示的事件

为循环for(var i=0;;i++){}创建,然后将您的函数放在此循环中,该循环将无限次执行。