在下一个操作之前等待几秒钟 - Javascript

时间:2012-11-08 07:40:28

标签: javascript

如代码中所述,在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()

            }

6 个答案:

答案 0 :(得分:4)

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

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

希望这有帮助

答案 1 :(得分:2)

如果函数

,你可以在else中使用setinterval
setTimeout(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()”将不会被执行。 :)