simple-pure-utils
Version:
Funciones puras para manipulación de objetos, arreglos, promesas y observables
44 lines • 3.42 kB
JavaScript
import { SyncPromise } from "./split";
/**True si la promesa se resuelve síncronamente */
export function isSyncPromise(x) {
return syncPromiseValue(x).status != "pending";
}
/**Devuelve un objeto con el valor de la promesa si es síncrona, si no, devuelve un objeto indicando que no se pudo obtener su valor*/
export function syncPromiseValue(x) {
let sync = {
status: "pending"
};
x.then((x) => sync = {
value: x,
status: "resolved"
}, err => sync = {
error: err,
status: "error"
});
return sync;
}
/**Devuelve true si una implementación de Promise soporta resolución síncrona */
export function isSyncPromiseType(promiseClass) {
return isSyncPromise(new promiseClass((resolve) => resolve(10)));
}
/**
* Devuelve una promesa que internamente almacena su valor una vez que fue resuelta, de tal manera que al resolverse de nuevo se resuleve de forma síncrona.
* Esto mejora el rendimiento bastante el rendimiento ya que se puede verificar de forma síncrona si la promesa ya esta resuelta (no se ocupa un estatus intermedio de "cargando")
* @param x Una promesa
*/
export function toSyncPromise(x) {
if (isSyncPromise(x))
return x;
return new SyncPromise((resolve, reject) => x.then(resolve, reject));
}
/**Crea una nueva promesa y devuelve por separado la promesa y las funciones que resuelven y rechazan a la promesa */
export function splitPromise() {
let resolve = null;
let reject = null;
const promise = new SyncPromise((onfulfilled, onrejected) => {
resolve = onfulfilled;
reject = onrejected;
});
return { promise, resolve, reject };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvbWlzZS9sb2dpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXRDLGtEQUFrRDtBQUNsRCxNQUFNLFVBQVUsYUFBYSxDQUFDLENBQW1CO0lBQzdDLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQztBQUNuRCxDQUFDO0FBUUQsc0lBQXNJO0FBQ3RJLE1BQU0sVUFBVSxnQkFBZ0IsQ0FBSSxDQUFpQjtJQUNqRCxJQUFJLElBQUksR0FBeUI7UUFDN0IsTUFBTSxFQUFFLFNBQVM7S0FDcEIsQ0FBQztJQUVGLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRztRQUNqQixLQUFLLEVBQUUsQ0FBQztRQUNSLE1BQU0sRUFBRSxVQUFVO0tBQ3JCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUc7UUFDYixLQUFLLEVBQUUsR0FBRztRQUNWLE1BQU0sRUFBRSxPQUFPO0tBQ2xCLENBQUMsQ0FBQztJQUNILE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFTRCxnRkFBZ0Y7QUFDaEYsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFlBQTBCO0lBQ3hELE9BQU8sYUFBYSxDQUFDLElBQUksWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBSSxDQUFpQjtJQUM5QyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDaEIsT0FBTyxDQUFDLENBQUM7SUFFYixPQUFPLElBQUksV0FBVyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBRUQscUhBQXFIO0FBQ3JILE1BQU0sVUFBVSxZQUFZO0lBQ3hCLElBQUksT0FBTyxHQUFHLElBQVcsQ0FBQztJQUMxQixJQUFJLE1BQU0sR0FBRyxJQUFXLENBQUM7SUFFekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQzNCLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxFQUFFO1FBQ3hCLE9BQU8sR0FBRyxXQUFXLENBQUM7UUFDdEIsTUFBTSxHQUFHLFVBQVUsQ0FBQztJQUN4QixDQUFDLENBQ0osQ0FBQztJQUVGLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ3hDLENBQUMifQ==