2016-02-22 25 views
1

我想連續調用JavaScript函數直到條件滿足。我有一個休息服務給我一個百分比。 我希望我的JavaScript不斷調用此REST服務,直到我將百分比設爲100%。當它達到100%時,它應該停止。調用JavaScript函數連續直到條件

總體結構如下 1)我有一個表格,它有一個顯示進度的單元格。

Packets     percent  
abc      10% 
efs      13% 

所以,當此表將加載,一個呼叫將轉到本功能的JavaScript將調用其他服務,直至百分比爲100%,這個功能應該被連續調用。

我應該使用遞歸調用嗎?並且是可能的函數內部函數。

+0

*「我應該使用遞歸調用,但裏面的功能函數?可能嗎?「*不,是。請顯示您當前的功能。 – nnnnnn

+0

問題到底是什麼?您目前如何向服務器提出請求?當您獲得100%回覆時,只需停止發送請求即可。 –

+0

什麼是來自服務器的響應? – guest271314

回答

1

這個函數調用condFunc當條件滿足時,應返回true。當readyFunc被調用時。 checkInterval以毫秒爲單位

檢查率
 var wait = function(condFunc, readyFunc, checkInterval) { 
      var checkFunc = function() { 
       if(condFunc()) { 
        readyFunc(); 
       } 
       else 
       { 
        setTimeout(checkFunc, checkInterval); 
       } 
      }; 
      checkFunc(); 
     }; 

用法:

 wait(
      function() { return new Date().getSeconds() == 10; }, 
      function() { console.log("Done"); }, 
      100 
     ); 

打印「完成」時,當前時間爲分鐘10秒後

+0

真棒這給了我很多幫助,很多Maksym –

1

如果從服務器響應0通過100可以嘗試使用.each(),​​或$.get()

function progress() { 
    el = this; 
    $.get("/path/to/rest/call", function(data) { 
    el.textContent = data + "%"; 
    // define conditions for next request 
    if (data < 100 /* conditions */) { 
     progress.call(el) 
    } 
    }) 
} 

$("table tr").each(function() { 
    progress.call(this) 
}) 
+0

所以我應該做這樣 功能populateTable(){ $( 「表TR」)。每個(函數(){ progress.call(本) })} 功能 進度(){ $(本).load(功能(數據){$ (本)的.text(函數(_,文本){ 返回parseInt函數(文本)+ 「%」 }) 如果(數據<100){ progress.call(this) } }) } –

+0

@ asj177在返回期望結果時是否有'js'? – guest271314

+0

我應該在哪裏放置其餘的電話? –

相關問題