From 763315f6f1301298ac280bc87433a42966edfc3c Mon Sep 17 00:00:00 2001 From: Daniel Levy Date: Wed, 10 May 2017 20:41:04 -0600 Subject: [PATCH 1/3] Update solution.js --- exercises/async_loops/solution/solution.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/exercises/async_loops/solution/solution.js b/exercises/async_loops/solution/solution.js index c579543..2d84068 100644 --- a/exercises/async_loops/solution/solution.js +++ b/exercises/async_loops/solution/solution.js @@ -1,12 +1,11 @@ -function loadUsers(userIds, load, done) { - var completed = 0 - var users = [] - userIds.forEach(function(id, index) { - load(id, function(user) { - users[index] = user - if (++completed === userIds.length) return done(users) - }) - }) +const Promise = require('bluebird'); +/* +Example using `Functional Promises` - removes side-effects, extra logical branching and mutable array usage. +*/ +module.exports = function loadUsers(userIds, load) { + load = Promise.promisify(load); + return Promise + .resolve(userIds) + .map(id => load(id)); } -module.exports = loadUsers From 80bd33e4bb613fda6ddaa8f7a82c881c09a7a2a5 Mon Sep 17 00:00:00 2001 From: Daniel Levy Date: Wed, 10 May 2017 21:59:53 -0600 Subject: [PATCH 2/3] Tightened code up Now 6 lines. --- exercises/async_loops/solution/solution.js | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/exercises/async_loops/solution/solution.js b/exercises/async_loops/solution/solution.js index 2d84068..02406df 100644 --- a/exercises/async_loops/solution/solution.js +++ b/exercises/async_loops/solution/solution.js @@ -1,11 +1,7 @@ const Promise = require('bluebird'); -/* -Example using `Functional Promises` - removes side-effects, extra logical branching and mutable array usage. -*/ + module.exports = function loadUsers(userIds, load) { - load = Promise.promisify(load); - return Promise - .resolve(userIds) + load = Promise.promisify(load); // could be eliminated + return Promise.resolve(userIds) .map(id => load(id)); } - From cec5a93994366cf883f5123c4312dd671a1d78a3 Mon Sep 17 00:00:00 2001 From: Daniel Levy Date: Wed, 10 May 2017 22:01:17 -0600 Subject: [PATCH 3/3] Update solution.js --- exercises/async_loops/solution/solution.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/exercises/async_loops/solution/solution.js b/exercises/async_loops/solution/solution.js index 02406df..0769cb2 100644 --- a/exercises/async_loops/solution/solution.js +++ b/exercises/async_loops/solution/solution.js @@ -1,7 +1,8 @@ const Promise = require('bluebird'); -module.exports = function loadUsers(userIds, load) { +module.exports = function loadUsers(userIds, load, done) { load = Promise.promisify(load); // could be eliminated return Promise.resolve(userIds) - .map(id => load(id)); + .map(id => load(id)) + .then(done); }