【发布时间】:2014-10-12 23:02:33
【问题描述】:
我有一个承诺数组和一个在承诺完成后需要调用的函数。但是,每当数组中的单个 promise 失败时,我的 $q.all(promise) 将不会启动回调函数。
function searchLibraries(library) {
//console.log(library);
console.log('inside searchlibraries');
var libraryCount = library.length;
for (var i = 0; i < libraryCount; i++) {
//console.log(i,library[i].siteUrl,library[i].listID,library[i].listName)
itemPromise[i] = $().SPServices({
operation: "GetListItems",
webURL: library[i].siteUrl,
listName: library[i].listID,
CAMLViewFields: cViewFieldsLimited,
CAMLQuery: cQueryAllCheckedOutDocuments,
CAMLQueryOptions: cQueryOptions,
cacheXML:true,
completefunc: function (xData,Status){
if($(xData).hasSPError()){
console.log("Error");
console.log("Error Code:" ,$(xData).getSPErrorCode());
console.log("Error Message:" ,$(xData).getSPErrorText());
}
}
})
}
return $q.all(itemPromise).then(parseSearchResult);
}
【问题讨论】:
-
添加一个计数器,当每个 promise 完成时递增,无论它是失败还是成功。每次增加计数器时,检查它是否等于总承诺计数的长度。如果有,请致电
parseSearchResult -
另见$q.all - take only those that resolved 以及从那里链接的那些
标签: javascript angularjs promise angular-promise