From 5daef4c4d14d2c29b36950a9b4a85536c5681b58 Mon Sep 17 00:00:00 2001 From: Aleksejs Sinicins Date: Wed, 27 Jul 2016 18:51:48 +0300 Subject: [PATCH] Do not duplicate promises --- src/Resolver.js | 15 ++++++++++----- src/client.js | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Resolver.js b/src/Resolver.js index 444582d..0490514 100644 --- a/src/Resolver.js +++ b/src/Resolver.js @@ -48,7 +48,10 @@ export default class Resolver extends React.Component { const queue = []; renderToStaticMarkup( - queue.push(promise)}> + { + queue.push(promise); + return Promise.resolve(true); + })}> {render} ); @@ -211,9 +214,11 @@ export default class Resolver extends React.Component { onResolve(state) { if (this.props.onResolve) { - this.props.onResolve(state); + return this.props.onResolve(state); } else if (this.context.resolver) { - this.context.resolver.onResolve(state); + return this.context.resolver.onResolve(state); + } else { + return state; } } @@ -244,7 +249,7 @@ export default class Resolver extends React.Component { const promises = pending.map(({ promise }) => promise); - const resolving = Promise.all(promises).then(values => { + var resolving = Promise.all(promises).then(values => { const id = this[ID]; const resolved = values.reduce((resolved, value, i) => { const { name } = pending[i]; @@ -258,7 +263,7 @@ export default class Resolver extends React.Component { }); // Resolve listeners get the current ID + resolved - this.onResolve(resolving); + resolving = this.onResolve(resolving); // Update current component with new data (on client) resolving.then(({ resolved }) => { diff --git a/src/client.js b/src/client.js index f38c2a5..5730adb 100644 --- a/src/client.js +++ b/src/client.js @@ -35,6 +35,7 @@ export default function client(Loader) { enqueue(promise) { this.queue.push(promise); + return promise; } render() {