組裝數據我有這樣
var projectPromises = $http.get('http://myapi.com/api/v3/projects?private_token=abcde123456');
$q.all([projectPromises]).then(function(data) {
console.log(data);
return data[0];
}).then(function(projects) {
var data = projects.data;
var promises = [];
var file = [];
for(var i = 0; i < data.length; i++){
var url = 'http://myapi.com/api/v3/projects/' + data[i].id + "/owner";
promises.push($http.get(url));
}
console.log(promises);
$q.all(promises).then(function(user) {
console.log(user);
}, function(error) {
console.log("error here");
console.log(error);
});
一段源代碼,讓我解釋一下我的源代碼。
首先,我將返回的項目列表中的第一API和我分配到projectPromises。獲得項目列表後,每個項目都將包含一個項目ID。我將遍歷項目列表並激發相應的http請求以獲取項目的所有者。
在那之後,我就用角q模塊推遲承諾的列表和日誌列表到控制檯
console.log(user);
這裏並不登錄任何東西。我嘗試打印錯誤,我知道原因是並非所有項目都包含用戶列表。否則,將返回404和200,反之亦然。所以承諾列表將包含來自API都200和404的對象的回報,所以我客人,當使用q推遲的承諾,它如果對象是404,但我不知道如何解決這個問題拋出的錯誤。
我的最終目的是讓每個項目的業主,他們將被填充到一個數組。
瞭解了一些關於承諾從這個新的..thx – charlietfl
@charlietfl很高興幫助。請記住'.then()'和'.catch()'都會創建新的承諾。它們對上游承諾沒有影響。 – JLRishe
yup ..創建一個[plunker](http://plnkr.co/edit/1pecB8iq8uaN8SvMljme?p=preview)看到這個更好 – charlietfl