簡體   English   中英

在下一個操作之前等待幾秒鍾 - Javascript

[英]Wait for few seconds before next action - Javascript

正如在代碼中所評論的那樣,我需要在檢查else if之前等待, else ifwriteFile(lFileData);之后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()

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

和:

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

希望這可以幫助

您可以在elseif函數中使用set interval

setTimeout(function,3000);

那么這意味着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”

您可能希望重寫代碼以使您想要在其自己的函數中延遲運行的部分。 從那里通過調用performFunctionXAfterDelay()來調用該函數:

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

}

function functionX() {
   // YOUR TIME DELAYED CODE
}
var t = setInterval("javascript expression", milliseconds);

clearInterval(t);

你可以使用setInterval

嗨,我認為在執行“else if(i> 1 && i <= 3)”代碼之前無需等待。 因為如果“if(i <= 1)”條件為真並且“writeFile(lFileData);”被執行,則不會為“else”部分提供控制,並且“someOtherfun()”將不會被執行。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM