simple-pure-utils
Version:
Funciones puras para manipulación de objetos, arreglos, promesas y observables
52 lines • 3.83 kB
JavaScript
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==
;