update to latest standards
This commit is contained in:
68
ts/index.ts
68
ts/index.ts
@ -1,66 +1,64 @@
|
||||
import 'typings-global'
|
||||
import * as util from 'util'
|
||||
import * as util from 'util';
|
||||
|
||||
export interface IResolve<T> {
|
||||
(value?: T | Promise<T>): void
|
||||
(value?: T | Promise<T>): void;
|
||||
}
|
||||
|
||||
export interface IReject {
|
||||
(reason?: any): void
|
||||
(reason?: any): void;
|
||||
}
|
||||
|
||||
export type TDeferredStatus = 'pending' | 'fulfilled' | 'rejected'
|
||||
export type TDeferredStatus = 'pending' | 'fulfilled' | 'rejected';
|
||||
|
||||
export class Deferred<T> {
|
||||
promise: Promise<T>
|
||||
resolve: IResolve<T>
|
||||
reject: IReject
|
||||
status: TDeferredStatus
|
||||
constructor () {
|
||||
promise: Promise<T>;
|
||||
resolve: IResolve<T>;
|
||||
reject: IReject;
|
||||
status: TDeferredStatus;
|
||||
constructor() {
|
||||
this.promise = new Promise<T>((resolve, reject) => {
|
||||
this.resolve = resolve
|
||||
this.reject = reject
|
||||
this.status = 'pending'
|
||||
})
|
||||
this.resolve = resolve;
|
||||
this.reject = reject;
|
||||
this.status = 'pending';
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export let defer = <T>() => {
|
||||
return new Deferred<T>()
|
||||
}
|
||||
return new Deferred<T>();
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates a new resolved promise for the provided value.
|
||||
*/
|
||||
export let resolvedPromise = <T>(value?: T): Promise<T> => {
|
||||
return Promise.resolve(value)
|
||||
}
|
||||
return Promise.resolve(value);
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates a new rejected promise for the provided reason.
|
||||
*/
|
||||
export let rejectedPromise = (err) => {
|
||||
return Promise.reject(err)
|
||||
}
|
||||
export let rejectedPromise = err => {
|
||||
return Promise.reject(err);
|
||||
};
|
||||
|
||||
export let promisify = util.promisify
|
||||
export let promisify = util.promisify;
|
||||
|
||||
// polyfill
|
||||
if (!promisify) {
|
||||
promisify = require('util.promisify')
|
||||
promisify = require('util.promisify');
|
||||
}
|
||||
export let map = async <T> (inputArg: T[],functionArg) => {
|
||||
let promisifedFunction = promisify(functionArg)
|
||||
let promiseArray: Promise<any>[] = []
|
||||
let resultArray = []
|
||||
export let map = async <T>(inputArg: T[], functionArg) => {
|
||||
let promisifedFunction = promisify(functionArg);
|
||||
let promiseArray: Promise<any>[] = [];
|
||||
let resultArray = [];
|
||||
for (let item of inputArg) {
|
||||
let promise: Promise<any> = promisifedFunction(item)
|
||||
promiseArray.push(promise)
|
||||
let promise: Promise<any> = promisifedFunction(item);
|
||||
promiseArray.push(promise);
|
||||
promise.then(x => {
|
||||
resultArray.push(x)
|
||||
})
|
||||
|
||||
resultArray.push(x);
|
||||
});
|
||||
}
|
||||
await Promise.all(promiseArray)
|
||||
return resultArray
|
||||
}
|
||||
await Promise.all(promiseArray);
|
||||
return resultArray;
|
||||
};
|
||||
|
Reference in New Issue
Block a user