From af1ba1ed7710c371efa264846e9a75b8fc1baebe Mon Sep 17 00:00:00 2001 From: Luke Hoban Date: Fri, 13 Mar 2015 16:30:43 -0700 Subject: [PATCH 1/4] Use ES7 async/await to simplify Promise logic --- package.json | 2 +- src/main.jsx | 29 ++++++++++++++--------------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index e3fdad9..c16c969 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ }, "browserify": { "transform": [ - "babelify" + ["babelify", { "experimental": true }] ] } } diff --git a/src/main.jsx b/src/main.jsx index 69a0174..55621cd 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -64,22 +64,21 @@ if (Session.isLoggedIn()) { * * @return {Promise} data containing responses mapped by route name */ -let fetchData = function(routes, params) { - let data = {}; + async function fetchData(routes, params) { + let data = {}; - return Promise.all(routes - .filter(route => route.handler.fetchData) - .map(route => { - return route.handler.fetchData(params).then(resp => { - data[route.name] = resp; - }) - }) - ).then(() => data); + await Promise.all(routes.map(async route => { + if(!route.handler.fetchData) return; + var resp = await route.handler.fetchData(params) + data[route.name] = resp; + }) + ); + + return data; } // Start the router -Router.run(routes, function(Handler, state) { - fetchData(state.routes, state.params).then((data) => { - React.render(, document.getElementById(DOM_APP_EL_ID)); - }); -}); \ No newline at end of file +Router.run(routes, async function(Handler, state) { + let data = await fetchData(state.routes, state.params); + React.render(, document.getElementById(DOM_APP_EL_ID)); +}); From 6468e7aee2c7977286b097beb82ecd54a3033614 Mon Sep 17 00:00:00 2001 From: Luke Hoban Date: Fri, 13 Mar 2015 16:36:38 -0700 Subject: [PATCH 2/4] Cleanup --- src/main.jsx | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main.jsx b/src/main.jsx index 55621cd..6f9dca4 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -64,17 +64,16 @@ if (Session.isLoggedIn()) { * * @return {Promise} data containing responses mapped by route name */ - async function fetchData(routes, params) { - let data = {}; +async function fetchData(routes, params) { + let data = {}; - await Promise.all(routes.map(async route => { - if(!route.handler.fetchData) return; - var resp = await route.handler.fetchData(params) - data[route.name] = resp; - }) - ); + await Promise.all(routes.map(async route => { + if(!route.handler.fetchData) return; + var resp = await route.handler.fetchData(params); + data[route.name] = resp; + })); - return data; + return data; } // Start the router From 81b507c47dd2273423455b9cf370bc6629061cfa Mon Sep 17 00:00:00 2001 From: Luke Hoban Date: Fri, 13 Mar 2015 16:37:59 -0700 Subject: [PATCH 3/4] No unecessary changes --- src/main.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.jsx b/src/main.jsx index 6f9dca4..933dde4 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -64,7 +64,7 @@ if (Session.isLoggedIn()) { * * @return {Promise} data containing responses mapped by route name */ -async function fetchData(routes, params) { +let fetchData = async function(routes, params) { let data = {}; await Promise.all(routes.map(async route => { From a73d5227942c7ed34e3fe60feae60702a9604e91 Mon Sep 17 00:00:00 2001 From: Luke Hoban Date: Fri, 13 Mar 2015 16:39:30 -0700 Subject: [PATCH 4/4] No unecessary changes --- src/main.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main.jsx b/src/main.jsx index 933dde4..45b8cb0 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -69,8 +69,7 @@ let fetchData = async function(routes, params) { await Promise.all(routes.map(async route => { if(!route.handler.fetchData) return; - var resp = await route.handler.fetchData(params); - data[route.name] = resp; + data[route.name] = await route.handler.fetchData(params); })); return data;