4

正如代码中所评论的那样,在检查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()

            }
4

6 回答 6

5
if(i <= 1){
    writeFile(lFileData); 
    doAdelay();
};

和:

function doAdelay(){
    setTimeout(function(){return true;},30000);
};

希望这可以帮助

于 2012-11-24T10:44:02.347 回答
2

您可以在 elseif 函数中使用设置间隔

setTimeout(function,3000);
于 2012-11-08T07:50:15.200 回答
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éric Hamidi”

于 2012-11-08T07:45:23.650 回答
1

您可能希望重写代码以使您想要运行的部分在其自己的函数中延迟运行。从那里通过调用 performFunctionXAfterDelay() 调用该函数:

function performFunctionXAfterDelay() {
  // 1000 ms delay
  window.setTimeout(functionX,1000)

}

function functionX() {
   // YOUR TIME DELAYED CODE
}
于 2012-11-08T07:47:40.793 回答
0
var t = setInterval("javascript expression", milliseconds);

clearInterval(t);

你可以用setInterval

于 2012-11-08T07:51:12.173 回答
0

嗨,我认为在执行“else if(i > 1 && i <=3)”代码之前不需要等待。因为如果“if(i <= 1)”条件为真并且“writeFile(lFileData);”被执行,“else”部分将不会被控制并且“someOtherfun()”将不会被执行。:)

于 2012-11-08T07:53:29.860 回答