diff --git a/packages/behavior/item/actions.js b/packages/behavior/item/actions.js index 1a9ceb2..b9061cf 100644 --- a/packages/behavior/item/actions.js +++ b/packages/behavior/item/actions.js @@ -70,39 +70,15 @@ export class Actions extends decorate(Traversals) { } parallel(context) { - const promises = []; - const results = []; - const tickingPromises = []; - for (let i = 0; i < this.traversals.length; i++) { - const traversal = this.traversals[i]; + let immediate = true; + const results = this.traversals.map((traversal) => { const result = traversal.traverse(context); + if (result instanceof Promise) { + immediate = false; + } results.push(result); - if (result instanceof TickingPromise) { - tickingPromises.push(result); - result.then(() => { - tickingPromises.splice(tickingPromises.indexOf(result), 1); - }); - } - else if (result instanceof Promise) { - promises.push(result); - } - } - if (tickingPromises.length > 0) { - return new TickingPromise( - (resolve) => { - resolve(Promise.all(results)); - }, - (elapsed) => { - for (let i = 0; i < tickingPromises.length; i++) { - tickingPromises[i].tick(elapsed); - } - }, - ); - } - if (promises.length > 0) { - return Promise.all(results); - } - return results; + }); + return immediate ? results : TickingPromise.all(results); } prologue() {