2013-06-19 24 views
1

有沒有一個地方,我可以找到更多關於jquery的功能?基本上,我做的是 (僞代碼)jquery當迴應和錯誤的文檔

$.when(ajaxCall1, ajaxCall2)).done(function(data1, data2) { 
console.log(data1); 
console.log(data2); 
// do something real with the data 
}); 

所以我不明白的是,在我的ajaxCall1,我用來做這樣的事情,當它是一個獨立的功能,而不是在jQuery的時候():

$.ajax({ 
     url: '/api/platform/' + platform, 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     success: function (data) { 
      console.log("Got data"); 
      self.platforms = data; 
      self.eventAggregator.trigger('getplatforms'); 
     }, 
    }); 

因此,該函數中的數據參數看起來與$ .when()返回的值不同。它看起來像$ .when通過記錄返回一個數組。所以我一味地去

self.platforms = data[0]; 

那麼是否有更多關於這個問題的文檔?我不願意在不知道它是什麼的情況下盲目地獲得陣列的第一個參數,並且我不知道在通話中出現錯誤時該怎麼做。

我的ajaxCall1方法基本上只是返回$ .ajax調用。

ajaxCall1() { 
return $.ajax.... 
} 
+1

您是否閱讀過http://api.jquery.com/jQuery.when/? – bfavaretto

+0

@bfavaretto我做了,但看着那一頁的文檔,除非我失去了一些東西,否則它並不是真的很多。 – Crystal

+0

你的實際代碼是否有'$。當(ajaxCall1,ajaxCall2))?這是一個語法錯誤(在最後加上多餘的括號)。 – bfavaretto

回答

1

$。當不根據許多承諾對象是如何在。

過去了如果僅在一個諾言對象傳遞兩個完全不同的東西,這將起到完全一樣,你來的成功回調。否則,如果傳遞2個或更多的promise對象,則每個參數都將是一個包含通常傳遞給成功回調的三個參數的數組。爲了得到你習慣的,訪問數組中的第一項。

console.log(data1[0]) 
console.log(data2[0]) 

注意,這裏假定promise對象是jQXHR對象。否則,該數組將包含傳遞給延遲對象的resolve方法的參數。

http://jsfiddle.net/LSpcK/

1

你是對的,documentation不明確有關。它說(重點煤礦):

在多個延遲對象傳遞給jQuery.when的情況下,方法從一個新的「主人」延遲對象,跟蹤所有的Deferreds的聚集狀態返回它的承諾已通過。一旦所有延期人員解決,該方法將解決其主人延遲,或者一旦延遲人員被拒絕,則拒絕主人延期。如果主Deferred已解析,則會傳遞傳遞給jQuery.when的所有Deferreds的解析值。例如,當Deferreds是jQuery.ajax()請求時,參數將成爲這些請求的jqXHR對象,按它們在參數列表中給出的順序排列。

這是錯的the arguments will be the jqXHR objectsdone方法實際上是爲每個請求傳遞包含data, status, jqXHR的數組。