parallel-es
Version:
Simple parallelization for EcmaScript
39 lines (38 loc) • 3.27 kB
TypeScript
import { IParallelChain } from "./parallel-chain";
import { IParallelStream } from "../stream/parallel-stream";
import { IParallelEnvironment, IParallelTaskEnvironment } from "../parallel-environment";
import { IParallelChainState } from "./parallel-chain-state";
import { IFunctionId } from "../../function/function-id";
/**
* Implementation of a {@link IParallelChain}
*
* The implementation uses an internal state ({@link IParallelChainState}) to distinguishes between a not yet scheduled job ({@link PendingParallelChainState}),
* a job that has been scheduled but potentially not yet completed ({@link ScheduledParallelChainState}) and a job that
* is waiting for another one to complete, but has not yet been scheduled ({@link DependentParallelChainState}).
*
* @param TIn type of the elements created by the generator
* @param TEnv type of the job environment
* @param TOut type of the elements in the resulting array
*/
export declare class ParallelChainImpl<TIn, TEnv extends IParallelEnvironment, TOut> implements IParallelChain<TIn, TEnv, TOut> {
state: IParallelChainState<TOut>;
/**
* Creates a new parallel chain with the given state
* @param state the state of the chain
*/
constructor(state: IParallelChainState<TOut>);
inEnvironment<TEnvNew extends IParallelEnvironment>(newEnv: Function | IParallelEnvironment | IFunctionId, ...params: any[]): IParallelChain<TIn, TEnv & TEnvNew, TOut>;
map<TResult>(mapper: ((this: void, element: TOut, env: TEnv & IParallelTaskEnvironment) => TResult) | IFunctionId): IParallelChain<TIn, TEnv, TResult>;
reduce<TResult>(defaultValue: TResult, accumulator: ((this: void, memo: TResult, value: TOut, env: TEnv & IParallelTaskEnvironment) => TResult) | IFunctionId, combiner?: (this: void, sub1: TResult, sub2: TResult) => TResult): IParallelStream<TResult[], TResult>;
filter(predicate: ((this: void, value: TOut, env: TEnv & IParallelTaskEnvironment) => boolean) | IFunctionId): IParallelChain<TIn, TEnv, TOut>;
subscribe(onNext: (subResult: TOut[], taskIndex: number, valuesPerWorker: number) => void, onError?: (reason: any) => void, onComplete?: (result: TOut[]) => void): IParallelStream<TOut[], TOut[]>;
then<TResult1, TResult2>(onfulfilled: (value: TOut[]) => (PromiseLike<TResult1> | TResult1), onrejected: (reason: any) => (PromiseLike<TResult2> | TResult2)): Promise<TResult2 | TResult1>;
then<TResult>(onfulfilled: (value: TOut[]) => (PromiseLike<TResult> | TResult), onrejected: (reason: any) => (PromiseLike<TResult> | TResult)): Promise<TResult>;
then<TResult>(onfulfilled: (value: TOut[]) => (PromiseLike<TResult> | TResult)): Promise<TResult>;
then<TResult>(onfulfilled?: (value: TOut[]) => (PromiseLike<TResult> | TResult), onrejected?: (reason: any) => (PromiseLike<TResult> | TResult)): Promise<TResult>;
then<TResult>(onfulfilled?: (value: TOut[]) => (PromiseLike<TResult> | TResult), onrejected?: (reason: any) => void): Promise<TResult>;
catch<TResult>(onrejected: (reason: any) => (PromiseLike<TResult> | TResult)): Promise<TResult | TOut[]>;
catch(onrejected: (reason: any) => (PromiseLike<TOut[]> | TOut[])): Promise<TOut[]>;
private resolveChain();
private _chain<TResult>(iterator, iteratee);
}