2013-03-06 63 views
1

對於我想要實現延遲加載的jQuery應用程序。 因此,我創建了一個對象,包含我所有的jqXHR promise。jQuery承諾不適用於多個jqXHR

當我現在組的所有成聲明

var resultset = new Object(); 
resultset.one = $.getScript('http://......'); 
resultset.two = $.getScript('http://......'); 

$.when(resultset.one,resultset.two).then(
function(){ alert('success')}, 
function(){alert('failure')} 
); 

那麼它總是轉到錯誤狀態。我不知道爲什麼,因爲js調試器告訴,所有請求都很好(狀態200)。

的JQ API文檔告訴下面是去工作:

$.when($.ajax("/page1.php"), $.ajax("/page2.php")) 
    .then(myFunc, myFailure); 

什麼想法?

回答

2

您可以使用getScript加入承諾(),並等待,直到所有的腳本加載,這樣的:

$.when(
    $.getScript("/mypath/myscript1.js"), 
    $.getScript("/mypath/myscript2.js"), 
    $.getScript("/mypath/myscript3.js") 
).done(function(){ 

    //place your code here, the scripts are all loaded 

}); 
+0

你是對的,但後來我不能確定它們中的哪去了錯誤狀態。我的事情是有用的一個有意義的錯誤消息。通過我之前發佈的解決方案,您可以在之後觀看您的承諾。 – redflag237 2013-03-06 14:14:34

0

好吧,我得到它的工作使用以下解決方法。 - >也許任何人都可以解釋我的區別,請?

$ .when.apply($,(resultset.one,resultset.two))。then(...);