私はいくつかのパラメータをとり、入力配列をループして空のアイテムを見つけ、それらを配列に加えてから$ qの後に追加するサービスを設計しました.allそれは私に空の項目の配列を与える必要があります解決しました。ネストされた約束を解決するための助けが必要です。約束が解決されません。
入力は、問題は、$ q.allが解決されることはありませんで、今のアイテム
function getElements(inputs) {
var elements= [],
promise, whenPromise,
promises = [],
mainPromise = $q.defer();
if (inputs.length === 0) {
mainPromise.resolve(elements);
return mainPromise.promise;
}
angular.forEach(inputs, function (input) {
promise = getPromises(input);
whenPromise = $q.resolve(promise).then(function (response) {
$timeout(function() {
if (response.isEmpty) {
**//perform action with the response.data;**
}
});
}, function() {
});
promises.push(whenPromise);
});
$q.all(promises).finally(function() {
mainPromise.resolve(outdatedEntities);
});
return mainPromise.promise;
}
function getPromises(input) {
var deferred = $q.defer();
someSerivce.getItemDetails(input.Id).then(function (value) {
if (value === null) {
$timeout(function() {
deferred.resolve({data: input, isEmpty: true});
});
} else {
//have item locally, but need to see if it's current
input.isEmpty().then(function (isEmpty) {
$timeout(function() {
deferred.resolve({data: input, isEmpty: isEmpty});
});
}, function (error) {
deferred.reject(error);
});
}
});
return deferred.promise;
}
の配列です。すべての内部約束が解決されているにもかかわらず。
達し、このコードは 'IF(response.isEmpty){'約束の各々のために? –
はい、しかし、$タイムアウトを置いた後にラップします – Dreamweaver
_その後$タイムアウトを入れます - どういう意味ですか? –