UNPKG

parallel.es

Version:
39 lines (38 loc) 1.98 kB
"use strict"; var arrays_1 = require("../../util/arrays"); var serialized_function_call_1 = require("../../function/serialized-function-call"); function createTaskEnvironment(definition, functionCallDeserializer) { var userDefinedEnvironment = {}; if (definition.environment) { if (serialized_function_call_1.isSerializedFunctionCall(definition.environment)) { var environmentProvider = functionCallDeserializer.deserializeFunctionCall(definition.environment); userDefinedEnvironment = environmentProvider(); } else { userDefinedEnvironment = definition.environment; } } return Object.assign({}, { taskIndex: definition.taskIndex, valuesPerTask: definition.valuesPerTask }, userDefinedEnvironment); } /** * Main coordination function for any operation performed using {@link IParallel}. * @param definition the definition of the operation to performed * @param options options passed from the thread pool * @param T type of the elements created by the generator * @param TResult type of the resulting elements * @returns the result of the operation from this worker */ function parallelJobExecutor(definition, _a) { var functionCallDeserializer = _a.functionCallDeserializer; var environment = createTaskEnvironment(definition, functionCallDeserializer); var generatorFunction = functionCallDeserializer.deserializeFunctionCall(definition.generator, true); var iterator = generatorFunction(environment); for (var _i = 0, _b = definition.operations; _i < _b.length; _i++) { var operation = _b[_i]; var iteratorFunction = functionCallDeserializer.deserializeFunctionCall(operation.iterator); var iteratee = functionCallDeserializer.deserializeFunctionCall(operation.iteratee); iterator = iteratorFunction(iterator, iteratee, environment); } return arrays_1.toArray(iterator); } exports.parallelJobExecutor = parallelJobExecutor;