From ac75079e2113949d5d64adbcf23d56f3cf295d41 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Fri, 23 Mar 2012 13:31:20 -0700 Subject: fix(q): resolve all of nothing to nothing $q.all([]) no longer throws exception and resolves to empty array [] --- src/service/q.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'src/service') diff --git a/src/service/q.js b/src/service/q.js index f0c030b0..074acd1d 100644 --- a/src/service/q.js +++ b/src/service/q.js @@ -364,16 +364,20 @@ function qFactory(nextTick, exceptionHandler) { counter = promises.length, results = []; - forEach(promises, function(promise, index) { - promise.then(function(value) { - if (index in results) return; - results[index] = value; - if (!(--counter)) deferred.resolve(results); - }, function(reason) { - if (index in results) return; - deferred.reject(reason); + if (counter) { + forEach(promises, function(promise, index) { + ref(promise).then(function(value) { + if (index in results) return; + results[index] = value; + if (!(--counter)) deferred.resolve(results); + }, function(reason) { + if (index in results) return; + deferred.reject(reason); + }); }); - }); + } else { + deferred.resolve(results); + } return deferred.promise; } -- cgit v1.2.3