From f056bb92efb0c62c90dd13bda249a466c10453bf Mon Sep 17 00:00:00 2001 From: thomasyimgit Date: Sat, 18 Nov 2017 23:01:27 -0500 Subject: [PATCH 1/2] check if reject is undefined and skip redundant add --- library/tiny-deferred/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/library/tiny-deferred/index.js b/library/tiny-deferred/index.js index eaa46b7..6ecf968 100644 --- a/library/tiny-deferred/index.js +++ b/library/tiny-deferred/index.js @@ -30,7 +30,9 @@ } Deferred.prototype.then = function (resolve, reject) { successCallbacks.add(resolve); - failCallbacks.add(reject); + if (reject) { + failCallbacks.add(reject); + } return this; } Deferred.prototype.reject = function (errMsg) { From c9fa3097aa6c7437ba573dd39b76655f44653336 Mon Sep 17 00:00:00 2001 From: thomasyimgit Date: Sat, 18 Nov 2017 23:24:09 -0500 Subject: [PATCH 2/2] add Deferred.race() --- library/tiny-deferred/index.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/library/tiny-deferred/index.js b/library/tiny-deferred/index.js index 6ecf968..c994a97 100644 --- a/library/tiny-deferred/index.js +++ b/library/tiny-deferred/index.js @@ -63,6 +63,23 @@ } return dfd; } + Deferred.race = function() { + var length = arguments.length; + var finished = false; + var result = null; + var dfd = new Deferred(); + + var cb = function(result) { + if (!finished) { + finished = true; + dfd.resolve(result); + } + } + for (var i = 0; i < length; i++) { + arguments[i].done(cb) + } + return dfd; + } if(typeof exports === 'object') { module.exports = Deferred;