如代码中所述,在else if
之后检查writeFile(lFileData);
之前我需要等待。怎么做到这一点?
for(var i=0;i<mLocalStorageCount;i++)
{
if(i <= 1)
{
writeFile(lFileData); //This action takes a lot of time with its call backs. I need a wait here.
}
else if(i > 1 && i <=3)
{
someOtherfun()
}
答案 0 :(得分:4)
if(i <= 1){
writeFile(lFileData);
doAdelay();
};
和
function doAdelay(){
setTimeout(function(){return true;},30000);
};
希望这有帮助
答案 1 :(得分:2)
如果函数
,你可以在else中使用setintervalsetTimeout(function,3000);
答案 2 :(得分:1)
那么这意味着writeFile函数是异步的吗?
我会在writeFile函数本身创建一个回调函数,然后执行someOtherfun()。
修改强>: 由于你无法真正完成回调函数中的其余迭代(你刚才说过),你可以这样做:
function writeFile () {
... here goes your function ...
if ( finished ) {
window.finished = true;
}
}
for (yourForCondition) {
if () {
window.finished = false;
writeFile();
while (!window.finished) {}
}
if () {
someOtherFun();
}
}
它有点脏,但它应该工作。它会循环,直到writeFile()表示他已完成。
<强> EDIT2 强>: 可能不会起作用,因为“while(!window.finished){}是一个繁忙的等待循环,将一个核心固定到100%,并可能让浏览器询问用户是否应该杀死该脚本。 - FrédéricHamidi”
答案 3 :(得分:1)
您可能希望重写代码以使您想要在其自身功能中延迟运行的部分。从那里通过调用performFunctionXAfterDelay()来调用该函数:
function performFunctionXAfterDelay() {
// 1000 ms delay
window.setTimeout(functionX,1000)
}
function functionX() {
// YOUR TIME DELAYED CODE
}
答案 4 :(得分:0)
var t = setInterval("javascript expression", milliseconds);
clearInterval(t);
你可以使用setInterval
答案 5 :(得分:0)
我认为在执行“else if(i&gt; 1&amp;&amp; i&lt; = 3)”代码之前不需要等待。因为如果“if(i&lt; = 1)”条件为真并且“writeFile(lFileData);”被执行,则“else”部分将不会给出控制,并且“someOtherfun()”将不会被执行。 :)