UNPKG

simple-pure-utils

Version:

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

52 lines 3.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.splitPromise = exports.toSyncPromise = exports.isSyncPromiseType = exports.syncPromiseValue = exports.isSyncPromise = void 0; const split_1 = require("./split"); /**True si la promesa se resuelve síncronamente */ function isSyncPromise(x) { return syncPromiseValue(x).status != "pending"; } exports.isSyncPromise = isSyncPromise; /**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*/ function syncPromiseValue(x) { let sync = { status: "pending" }; x.then((x) => sync = { value: x, status: "resolved" }, err => sync = { error: err, status: "error" }); return sync; } exports.syncPromiseValue = syncPromiseValue; /**Devuelve true si una implementación de Promise soporta resolución síncrona */ function isSyncPromiseType(promiseClass) { return isSyncPromise(new promiseClass((resolve) => resolve(10))); } exports.isSyncPromiseType = isSyncPromiseType; /** * 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 */ function toSyncPromise(x) { if (isSyncPromise(x)) return x; return new split_1.SyncPromise((resolve, reject) => x.then(resolve, reject)); } exports.toSyncPromise = toSyncPromise; /**Crea una nueva promesa y devuelve por separado la promesa y las funciones que resuelven y rechazan a la promesa */ function splitPromise() { let resolve = null; let reject = null; const promise = new split_1.SyncPromise((onfulfilled, onrejected) => { resolve = onfulfilled; reject = onrejected; }); return { promise, resolve, reject }; } exports.splitPromise = splitPromise; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvbWlzZS9sb2dpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBc0M7QUFFdEMsa0RBQWtEO0FBQ2xELFNBQWdCLGFBQWEsQ0FBQyxDQUFtQjtJQUM3QyxPQUFPLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUM7QUFDbkQsQ0FBQztBQUZELHNDQUVDO0FBUUQsc0lBQXNJO0FBQ3RJLFNBQWdCLGdCQUFnQixDQUFJLENBQWlCO0lBQ2pELElBQUksSUFBSSxHQUF5QjtRQUM3QixNQUFNLEVBQUUsU0FBUztLQUNwQixDQUFDO0lBRUYsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHO1FBQ2pCLEtBQUssRUFBRSxDQUFDO1FBQ1IsTUFBTSxFQUFFLFVBQVU7S0FDckIsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRztRQUNiLEtBQUssRUFBRSxHQUFHO1FBQ1YsTUFBTSxFQUFFLE9BQU87S0FDbEIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQWJELDRDQWFDO0FBU0QsZ0ZBQWdGO0FBQ2hGLFNBQWdCLGlCQUFpQixDQUFDLFlBQTBCO0lBQ3hELE9BQU8sYUFBYSxDQUFDLElBQUksWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUM7QUFGRCw4Q0FFQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixhQUFhLENBQUksQ0FBaUI7SUFDOUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDO0lBRWIsT0FBTyxJQUFJLG1CQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFMRCxzQ0FLQztBQUVELHFIQUFxSDtBQUNySCxTQUFnQixZQUFZO0lBQ3hCLElBQUksT0FBTyxHQUFHLElBQVcsQ0FBQztJQUMxQixJQUFJLE1BQU0sR0FBRyxJQUFXLENBQUM7SUFFekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQkFBVyxDQUMzQixDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUN4QixPQUFPLEdBQUcsV0FBVyxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxVQUFVLENBQUM7SUFDeEIsQ0FBQyxDQUNKLENBQUM7SUFFRixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUN4QyxDQUFDO0FBWkQsb0NBWUMifQ==