2013-02-13 234 views
0

另一個JavaScript函數,我有兩個JavaScript函數呼叫時,功能不respondong

searchButtonClicked() 
hidemap() 

searchButtonClicked()將在body onload被調用。

searchButtonClicked()有時不迴應。所以我想讓它嘗試執行5秒鐘,如果它的劑量執行,我想打電話給hidemap()

請幫忙。提前致謝。 烏德

這裏是功能

function searchButtonClicked() { 
    if (inlocatorHubMode) { 
    locatorHubSearch(); 
    } 
    else { 
    search(); 
    } 
} 
+0

searchButtonClicked'在內部執行什麼操作?阿賈克斯? – dfsq 2013-02-13 11:48:07

+0

它從外部服務搜索數據並返回結果數組。 – 2013-02-13 11:48:52

+4

您應該瞭解爲什麼有時searchButtonClicked()不會響應,而是在失敗時加載另一個函數。 – 2013-02-13 11:50:50

回答

1

我假設searchButtonClicked是一個AJAX請求。

如果是這種情況,您可以使用setTimeout和回調的組合來實現您的目標。

var searchTimeout = null; 

function searchButtonClicked(){ 
    searchTimeout = setTimeout(requestFailed, 5000); 

    //If you're using jQuery, something like this 
    $.ajax({ 
    url: "service.php", 
    success: requestSuccess 
    }); 

    //If you're not, something like this 
    xmlhttp.onreadystatechange=(function(){ 
    if(xmlhttp.readyState==4 && xmlhttp.status==200){ 
     requestSuccess(); 
    } 
    }); 
} 

function requestSuccess(){ 
    clearTimeout(searchTimeout); 
    //Yay! It succeeded! 
} 

function requestFailed(){ 
    hideMap(); 
    //It didn't unfortunately =[ 
} 

編輯:一個編輯有人說,這不是實際上是一個AJAX請求。如果這對其他人有用,請留在這裏。

+0

謝謝你的回答@Dolondro。但是我的函數沒有Ajax調用。我將這個功能添加到了我的問題中。請看看它。再次感謝您的幫助。 – 2013-02-13 12:02:16

+0

我該如何設定等待時間?像5秒 – 2013-02-13 12:12:51

+0

糟糕,setTimeout應該讀取'setTimeout(requestFailed,5000)'來表示它會持續5秒。編輯。 – Doug 2013-02-13 13:00:37

0

有以JavaScript

window.setTimeout("javascript function",milliseconds); 

此功能等待指定的毫秒數,然後執行指定的功能的功能。

在你的情況下,你可以在函數的開始處設置超時。 因此,在指定的毫秒後,您的第二個函數將執行