Differentiate between single-result and multiple-results callbacks.

This commit is contained in:
Duncan Mak
2013-06-20 14:22:50 -04:00
parent 57c7e3c001
commit 7efa6bbca5
+44 -44
View File
@@ -3,65 +3,65 @@
// Definitions by: Boris Yankov <https://github.com/borisyankov/>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
interface AsyncCallback<T> { (err: string, results: T[]): any; }
interface AsyncIterator<T> { (item: T, callback: AsyncCallback<T>): void; }
interface AsyncMemoIterator<T> { (memo: T, item: T, callback: AsyncCallback<T>): void; }
interface AsyncMultipleResultsCallback<T> { (err: string, results: T[]): any; }
interface AsyncSingleResultCallback<T> { (err: string, result: T): any; }
interface AsyncIterator<T> { (item: T, callback: AsyncMultipleResultsCallback<T>): void; }
interface AsyncMemoIterator<T> { (memo: T, item: T, callback: AsyncSingleResultCallback<T>): void; }
interface AsyncWorker<T> { (task: T, callback: Function): void; }
interface AsyncQueue<T> {
length(): number;
concurrency: number;
push(task: T, callback: AsyncCallback<T>): void;
saturated: AsyncCallback<T>;
empty: AsyncCallback<T>;
drain: AsyncCallback<T>;
push(task: T, callback: AsyncMultipleResultsCallback<T>): void;
saturated: AsyncMultipleResultsCallback<T>;
empty: AsyncMultipleResultsCallback<T>;
drain: AsyncMultipleResultsCallback<T>;
}
interface Async {
// Collections
forEach<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>): void;
forEachSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>): void;
forEachLimit<T>(arr: T[], limit: number, iterator: AsyncIterator<T>, callback: AsyncCallback<T>): void;
map<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
mapSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
filter<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
select<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
filterSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
selectSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
reject<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
rejectSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
reduce<T>(arr: T[], memo: T, iterator: AsyncMemoIterator<T>, callback: AsyncCallback<T>);
inject<T>(arr: T[], memo: T, iterator: AsyncMemoIterator<T>, callback: AsyncCallback<T>);
foldl<T>(arr: T[], memo: T, iterator: AsyncMemoIterator<T>, callback: AsyncCallback<T>);
reduceRight<T>(arr: T[], memo: T, iterator: AsyncMemoIterator<T>, callback: AsyncCallback<T>);
foldr<T>(arr: T[], memo: T, iterator: AsyncMemoIterator<T>, callback: AsyncCallback<T>);
detect<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
detectSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
sortBy<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
some<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
any<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
every<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
all<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
concat<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
concatSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncCallback<T>);
forEach<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>): void;
forEachSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>): void;
forEachLimit<T>(arr: T[], limit: number, iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>): void;
map<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
mapSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
filter<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
select<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
filterSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
selectSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
reject<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
rejectSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
reduce<T>(arr: T[], memo: T, iterator: AsyncMemoIterator<T>, callback: AsyncSingleResultCallback<T>);
inject<T>(arr: T[], memo: T, iterator: AsyncMemoIterator<T>, callback: AsyncSingleResultCallback<T>);
foldl<T>(arr: T[], memo: T, iterator: AsyncMemoIterator<T>, callback: AsyncSingleResultCallback<T>);
reduceRight<T>(arr: T[], memo: T, iterator: AsyncMemoIterator<T>, callback: AsyncSingleResultCallback<T>);
foldr<T, U>(arr: T[], memo: T, iterator: AsyncMemoIterator<T>, callback: AsyncSingleResultCallback<T>);
detect<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
detectSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
sortBy<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
some<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
any<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
every<T>(arr: T[], iterator: AsyncIterator<T>, callback: (result: boolean) => any);
all<T>(arr: T[], iterator: AsyncIterator<T>, callback: (result: boolean) => any);
concat<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
concatSeries<T>(arr: T[], iterator: AsyncIterator<T>, callback: AsyncMultipleResultsCallback<T>);
// Control Flow
series<T>(tasks: T[], callback?: AsyncCallback<T>): void;
series<T>(tasks: T, callback?: AsyncCallback<T>): void;
parallel<T>(tasks: T[], callback?: AsyncCallback<T>): void;
parallel<T>(tasks: T, callback?: AsyncCallback<T>): void;
whilst(test: Function, fn: Function, callback: AsyncCallback): void; // TODO: generify
until(test: Function, fn: Function, callback: AsyncCallback): void; // TODO: generify
waterfall<T>(tasks: T[], callback?: AsyncCallback<T>): void;
waterfall<T>(tasks: T, callback?: AsyncCallback<T>): void;
series<T>(tasks: T[], callback?: AsyncMultipleResultsCallback<T>): void;
series<T>(tasks: T, callback?: AsyncMultipleResultsCallback<T>): void;
parallel<T>(tasks: T[], callback?: AsyncMultipleResultsCallback<T>): void;
parallel<T>(tasks: T, callback?: AsyncMultipleResultsCallback<T>): void;
whilst(test: Function, fn: Function, callback: Function): void;
until(test: Function, fn: Function, callback: Function): void;
waterfall<T>(tasks: T[], callback?: AsyncMultipleResultsCallback<T>): void;
waterfall<T>(tasks: T, callback?: AsyncMultipleResultsCallback<T>): void;
queue<T>(worker: AsyncWorker<T>, concurrency: number): AsyncQueue<T>;
//auto(tasks: any[], callback?: AsyncCallback<T>): void;
auto<T>(tasks: T, callback?: AsyncCallback<T>): void;
//auto(tasks: any[], callback?: AsyncMultipleResultsCallback<T>): void;
auto<T>(tasks: T, callback?: AsyncMultipleResultsCallback<T>): void;
iterator(tasks): Function;
apply(fn: Function, ...arguments: any[]): void;
nextTick<T>(callback: AsyncCallback<T>): void;
nextTick<T>(callback: AsyncMultipleResultsCallback<T>): void;
// Utils
memoize(fn: Function, hasher?: Function): Function;