UNPKG

mix-async-generator

Version:

``` npm i mix-async-generator ```

71 lines (70 loc) 2.49 kB
export declare namespace MixAsyncGenerator { type AG<NextOut = unknown, Return = unknown, NextIn = unknown> = [ NextOut, Return, NextIn ]; type Gen<T extends AG, B extends boolean = boolean> = { name: string; runner: AsyncGenerator<T[0], T[1], T[2]>; /**替补元素/惰性元素 * 意味着只有到不得不用的时候才会去使用 */ bench: B; /**当前的步伐 */ currentStep: IteratorResult<T[0], T[1]> | undefined; /**偷跑的步数,默认是0 * 偷跑意味着它始终会努力提供jumpGun个result * 替补元素也可以偷跑,但只有轮到它上场才能偷跑 */ jumpGun: number; /**缓存在队列中的步伐数 */ inQueueSteps: number; }; type Result<T extends AG> = { step: IteratorResult<T[0], T[1]>; from?: Gen<T>; }; type ResultWithFrom<T extends AG, B extends boolean = boolean> = { step: IteratorResult<T[0], T[1]>; from: Gen<T, B>; }; type Error<T extends AG> = { from: Gen<T>; reason: unknown; }; } export declare class MixAsyncGenerator<T extends MixAsyncGenerator.AG = MixAsyncGenerator.AG> { private _allGenList; join(runner: AsyncGenerator<T[0], T[1], T[2]>, opts?: { name?: string; bench?: boolean; jumpGun?: number; }): MixAsyncGenerator.Gen<T, boolean>; private _join; remove(gen: MixAsyncGenerator.Gen<T>): boolean; private _enqueueGen; private _dequeueGen; /**正在执行中的任务,等待返回后就从这个集合中移除 */ private _runnings; private _handleGen; /**候补队列 */ private _benchGen; /**自由队列 */ private _freeGen; private _genWaitter; /**入列 * 这个函数与_handleGen是紧密关联的,是_handleGen的一部分 */ private _enqueueResult; /**出列 */ private _dequeueResult; private _freeResult; private _benchResult; private _resultWaiter; readonly onError: import("evt/lib/types").Evt<MixAsyncGenerator.Error<T>>; next(): MixAsyncGenerator.ResultWithFrom<T, true> | MixAsyncGenerator.ResultWithFrom<T, false> | Promise<MixAsyncGenerator.Result<T>>; get isDone(): boolean; toAsyncIterator(): AsyncGenerator<T[0], void, unknown>; toPromise(): Promise<void>; }