simple-pure-utils
Version:
Funciones puras para manipulación de objetos, arreglos, promesas y observables
35 lines (34 loc) • 2.35 kB
TypeScript
interface ThenArg<T> {
onfulfilled: ((value: T) => any | PromiseLike<any>) | undefined | null;
onrejected: ((reason: any) => any | PromiseLike<any>) | undefined | null;
}
/**Muy similar al @see Promise pero si el resolve se ejecuta inmediatamente la promesa se resuelve síncronamente
* Esto permite obtener el valor de una promesa resuelta sincronamente con el @see syncPromiseValue
* Puede convertir una promesa de javascript a un SyncPromise con el @see toSyncPromise, aunque no tendrá el comportamiento síncrono
*
* Para que una promesa sea sincrona desde su origen debe de ser creada de forma síncrona, ya sea construyendo esta clase o con los metodos para crear promesas como
* @see synResolve @see syncFail @see splitPromise
*
* Note que @see delay(0) no devuelve una promesa síncrona
*/
export declare class SyncPromise<T> implements PromiseLike<T> {
constructor(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void);
resolve: (value?: T | PromiseLike<T>) => void;
private syncResolve;
reject: (reason?: any) => void;
listeners: (() => void)[];
callListeners: () => void;
value?: T;
error?: any;
status: "pending" | "resolved" | "error";
callThenArg: <TResult1 = T, TResult2 = never>(arg: ThenArg<T>) => TResult1 | PromiseLike<TResult1 | TResult2>;
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): PromiseLike<any>;
}
/**Devuelve una promesa que se resuelve síncronamente con el valor especificado, esto es diferente a Promise.resolve(x) ya que el metodo then del Promise.resolve() no se resuleve inmediatamente después de construir la promesa */
export declare function syncResolve<T>(x: T | PromiseLike<T>): PromiseLike<T>;
export declare function syncResolve(): PromiseLike<void>;
/**Devuelve una promesa que se resuelve síncronamente con el valor especificado, esto es diferente a Promise.resolve(x) ya que el metodo then del Promise.resolve() no se resuleve inmediatamente después de construir la promesa */
export declare function syncFail(reason: any): PromiseLike<any>;
/**Una promesa que nunca se resuleve */
export declare const never: Promise<never>;
export {};