UNPKG

simple-pure-utils

Version:

Funciones puras para manipulación de objetos, arreglos, promesas y observables

44 lines 3.42 kB
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==