refactor: simple
This commit is contained in:
parent
1af713cfb8
commit
6d6a22d527
|
@ -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() {
|
||||
|
|
Loading…
Reference in New Issue
Block a user