diff --git a/promise/promise.js b/promise/promise.js index cf24f387..68247f69 100644 --- a/promise/promise.js +++ b/promise/promise.js @@ -72,7 +72,8 @@ if (typeof Promise === "undefined") { Promise.all = function(list) { return new Promise(function(resolve, reject) { var total = list.length, count = 0, values = [] - for (var i = 0; i < list.length; i++) { + if (list.length === 0) resolve([]) + else for (var i = 0; i < list.length; i++) { new function(i) { function consume(value) { count++ diff --git a/promise/tests/test-promise.js b/promise/tests/test-promise.js index eca16edc..690c96db 100644 --- a/promise/tests/test-promise.js +++ b/promise/tests/test-promise.js @@ -530,6 +530,12 @@ o.spec("promise", function() { done() }) }) + o("resolves empty array", function(done) { + Promise.all([]).then(function(value) { + o(value).deepEquals([]) + done() + }) + }) o("resolves non-promise to itself", function(done) { var a = new Promise(function(resolve, reject) { callAsync(function() {resolve(1)})