import * as plugins from "./taskbuffer.plugins" import * as helpers from "./taskbuffer.classes.helpers" import { Task } from "./taskbuffer.classes.task" export class Taskparallel extends Task { taskArray: Task[]; constructor(optionsArg: { taskArray: Task[] }){ let options = plugins.lodash.merge( optionsArg, { taskFunction: () => { let done = plugins.q.defer(); let promiseArray: Promise[] = []; // stores promises of all tasks, since they run in parallel this.taskArray.forEach(function (taskArg) { promiseArray.push(taskArg.trigger()); }) Promise.all(promiseArray) .then(done.resolve); return done.promise; } } ); super(options); this.taskArray = optionsArg.taskArray; } }