繁体   English   中英

在Titanium中做while循环无法正常工作

[英]do while loop not working properly in Titanium

我认为这应该很容易,但是我不知所措。

我创建了一个应用程序,该应用程序基于“ setInterval”延迟在钛合金屏幕上循环显示图像。

它可以无限期地循环图像,但是我想添加一个函数,使用户可以按一定的时间延迟(通过循环设置一定的迭代次数)或按一下按钮(“停止”)退出循环。

这段代码可以调用一个函数,该函数从我的mamp服务器中提取一个图像,并在Titanium中创建一个显示该图像的新窗口:

setInterval(function(){call();}, 3000);

但是,当我尝试将其更进一步时,它将不起作用。

var keepGoing;
do {
setInterval(function(){call();}, 3000);
}
while (keepGoing);

function stop(e){
return keepGoing = false;
}

从我的xml中调用函数“ stop”,如下所示:

<Button id="stop" onClick="stop">stop</Button>

我什至尝试了以下方法都无济于事:

do {
setInterval(function(){call();}, 3000);
}
while (0 > 1);

这样它将循环一次,然后停止工作。

任何想法将不胜感激!

一旦启动setInterval ,它将进入无限循环。 如果要停止setInterval只需调用clearInterval

var interval;

interval = setInterval(function(){call();}, 3000);

function stop(e){
    clearInterval(interval);
}

就我而言,这已经完成了工作。

您需要这样的模式:

function loop () {
    call();   
    if (keepGoing) {
        setTimeout(loop, 3000);
    }
}
loop();

顺便说一句,下面的代码为什么不起作用是面试中的一个普遍问题(有人问我几次)。

var keepGoing;
do { setInterval(call, 3000); } while (keepGoing);

诀窍是,传递给setInterval函数有时会在3秒后调用,但前提是主线程是空闲的。 而且它永远不会免费-它正在无限循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM