From a130e787c3bb872cff9350ed22cbfa35d3a47b75 Mon Sep 17 00:00:00 2001 From: Jeffrey Horn Date: Wed, 2 Sep 2015 10:43:27 -0700 Subject: [PATCH] return result from callback returning the result of the callback allows you to chain the promise like you would expect --- lib/helpers/spread.js | 2 +- test/specs/helpers/spread.spec.js | 8 ++++++++ test/specs/promise.spec.js | 16 ++++++++++++---- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/helpers/spread.js b/lib/helpers/spread.js index 64005df..d31dddb 100644 --- a/lib/helpers/spread.js +++ b/lib/helpers/spread.js @@ -22,6 +22,6 @@ */ module.exports = function spread(callback) { return function (arr) { - callback.apply(null, arr); + return callback.apply(null, arr); }; }; diff --git a/test/specs/helpers/spread.spec.js b/test/specs/helpers/spread.spec.js index 8f8818d..702063b 100644 --- a/test/specs/helpers/spread.spec.js +++ b/test/specs/helpers/spread.spec.js @@ -9,5 +9,13 @@ describe('helpers::spread', function () { expect(value).toEqual(50); }); + + it('should return callback result', function () { + var value = spread(function (a, b) { + return a * b; + })([5, 10]); + + expect(value).toEqual(50); + }); }); diff --git a/test/specs/promise.spec.js b/test/specs/promise.spec.js index f15d626..430ab09 100644 --- a/test/specs/promise.spec.js +++ b/test/specs/promise.spec.js @@ -84,15 +84,23 @@ describe('promise', function () { it('should support spread', function (done) { var sum = 0; var fulfilled = false; + var result; - axios.all([123, 456]).then(axios.spread(function (a, b) { - sum = a + b; - fulfilled = true; - })); + axios + .all([123, 456]) + .then(axios.spread(function (a, b) { + sum = a + b; + fulfilled = true; + return 'hello world'; + })) + .then(function (res) { + result = res; + }); setTimeout(function () { expect(fulfilled).toEqual(true); expect(sum).toEqual(123 + 456); + expect(result).toEqual('hello world'); done(); }, 0); });