我有一堆调用另一个函数的函数。我想在无限循环中运行这些函数组,并且不能真正提出逻辑。
我的代码如下所示:
<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)函数以获得更清晰的信息。
答案 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)
你不需要一个明确的无限循环,你可以让函数一遍又一遍地调用另一个
以下是链接示例:
[{"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;
答案 2 :(得分:-1)
我建议不要写任何运行无限循环的逻辑,因为这会导致浏览器出现问题。但是,如果您希望它完成如下所示的事件
为循环for(var i=0;;i++){}
创建,然后将您的函数放在此循环中,该循环将无限次执行。