【发布时间】:2014-06-18 14:52:09
【问题描述】:
好的,所以我需要在循环内运行超时,而无需重新调用循环。内部循环需要超时。
(function loaded() {
for(var i=0;i<100; i++){
if(!SOMECONDITION){
setTimeout(loaded, 1);
}
}
})();
这段代码几乎可以完美运行,除非条件不满足,它会调用整个循环。我需要它只在这样的循环内调用..但它不起作用。
for(var i=0;i<100; i++){
(function loaded(i) {
if(!SOMECONDITION){
setTimeout(loaded, 1);
}
})(i);
}
变量 i 必须能够在循环中传递。
【问题讨论】:
-
你为什么要这样写代码?看来您正在尝试以 Javascript 的速度快速轮询,以使您的条件为真。这通常是一种糟糕的编程方式。它会扼杀移动设备的电池寿命。它占用 CPU 周期。而且,最重要的是,你同时做 100 个这样的事情。这种技术简直太离谱了。您需要更好的方法。
-
我不知道您正在测试的 SOMECONDITION 是什么,但您应该想办法从任何代码更改该条件的情况下创建某种通知,以便您可以在 SOMECONDITION 时直接收到通知可能有不同的价值。然后,您的代码只需要在该通知处理程序中,您就不会影响 CPU 和电池。您可以使用回调或自定义事件或您自己的通知机制。
标签: javascript timeout