2012-12-21 51 views
0

在我的測試網站上,我嘗試在用戶切換視頻之前使用AJAX加載一些關於視頻的文本,然後在ajax成功返回後輸入文本。如何在兩個單獨的函數可用後立即運行腳本?

我需要檢查AJAX是否已成功返回並且JavaScript函數已可用。我怎樣才能檢查這個?

爲AJAX加載並儘快javascript函數我可以分別就立即執行功能已經變得可用,但我不知道他們會來的次序。

+3

你是指JavaScript函數變得可用的意思是什麼?你將用什麼機制來檢測? – RonaldBarzell

+2

*變爲可用* - 如果可能的話,您應該讓其他函數觸發某種事件/回調。 – McGarnagle

+0

我正在使用slides.js,因此我不能使用回調函數,因爲我不知道哪個函數會先返回。 – user1082764

回答

1

你就可以用活動的東西,回調。我仍然不確定你的意思是「功能已經變得可用」,但是這裏有些東西不應該讓你開始。

// Check if all conditions are complete. 
function completionChecker(limit, callback) { 
    // Private count variable will outlast scope due to closure. 
    var count = 0; 
    // Return a callback for the event. 
    return function(event) { 
    if(++count == limit) { 
     // Call the callback supplied. 
     callback(); 
     // Remove the event listener, we've reached the limit. 
     this.removeEventListener("finished", arguments.callee, false); 
    } 
    }  
} 

// Some function to perform when everything is complete. 
function myFunc() { /* Do stuff */ } 

// Create a custom event. 
var myEvt = new CustomEvent("finished"); 
// Add a listener to the document. After 2 "finished" events, call myFunc. 
document.addEventListener("finished", completionChecker(2, myFunc), false); 

// Now in your ajax success callback, and wherever your other function 
// has "become available", fire the "finished" event. 
document.dispatchEvent(evt); 
相關問題