UNPKG

simple-pure-utils

Version:

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

52 lines 3.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.debounceSync = void 0; const rx = require("rxjs"); /**El mismo comportamiento que el debounce, pero cuando la promesa se resuelve inmediatamente, devuelve el valor de forma síncrona, * este comportamiento no lo tiene el debounce de RxJS, ya que si devuelve una promesa ya resuelta aún así el valor se pospone hasta el siguiente evento de JS * */ function debounceSync(timeFunc) { return (obs) => new rx.Observable(subs => { let cancelar = false; /**Si hay un valor pendiente de reportar */ let pendiente = undefined; let current = 0; const ReportarPendiente = () => { if (pendiente && !cancelar) { //Reportamos el ultimo valor si es que falta: subs.next(pendiente.x); pendiente = undefined; } }; const ret = obs.subscribe(next => { if (cancelar) return; let promesaInmediata = true; current++; const currProm = current; const onPromise = () => { //Si esta promesa es vieja, no hace nada: if (currProm != current) return; ///Llamamos inmediatamente al next ReportarPendiente(); }; pendiente = { x: next }; const prom = timeFunc(next); prom.then(onPromise); //Si la ejecución del onPromise es después de este punto, la promesa no fue instantánea: promesaInmediata = false; }, error => { ReportarPendiente(); subs.error(error); cancelar = true; }, () => { ReportarPendiente(); subs.complete(); cancelar = true; }); return ret; }); } exports.debounceSync = debounceSync; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVib3VuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQTJCO0FBRTNCOztNQUVNO0FBQ04sU0FBZ0IsWUFBWSxDQUFJLFFBQXFDO0lBQ2pFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNyQyxJQUFJLFFBQVEsR0FBWSxLQUFLLENBQUM7UUFDOUIsMkNBQTJDO1FBQzNDLElBQUksU0FBUyxHQUF5QixTQUFTLENBQUM7UUFDaEQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxFQUFFO1lBQzNCLElBQUksU0FBUyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUN4Qiw2Q0FBNkM7Z0JBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixTQUFTLEdBQUcsU0FBUyxDQUFDO2FBQ3pCO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUM3QixJQUFJLFFBQVE7Z0JBQ1IsT0FBTztZQUVYLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzVCLE9BQU8sRUFBRSxDQUFDO1lBQ1YsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ3pCLE1BQU0sU0FBUyxHQUFHLEdBQUcsRUFBRTtnQkFDbkIseUNBQXlDO2dCQUN6QyxJQUFJLFFBQVEsSUFBSSxPQUFPO29CQUNuQixPQUFPO2dCQUVYLGtDQUFrQztnQkFDbEMsaUJBQWlCLEVBQUUsQ0FBQztZQUN4QixDQUFDLENBQUM7WUFFRixTQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckIsd0ZBQXdGO1lBQ3hGLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU3QixDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDUCxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEIsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNwQixDQUFDLEVBQUUsR0FBRyxFQUFFO1lBQ0osaUJBQWlCLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBaERELG9DQWdEQyJ9