UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

44 lines (43 loc) 1.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.throttleTimeObservable = void 0; var create_timeout_1 = require("../../../../../../misc/timer/create-timeout.cjs"); function throttleTimeObservable(subscribe, duration, _a) { var _b = _a === void 0 ? {} : _a, _c = _b.leading, leading = _c === void 0 ? true : _c, _d = _b.trailing, trailing = _d === void 0 ? true : _d; return function (emit) { var lastSendValueTime = leading ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY; var abortTimeout = null; var trailingValue; var _emit = function (value) { lastSendValueTime = Date.now(); emit(value); }; var unsubscribe = subscribe(function (value) { var elapsedTime = Math.max(0, Date.now() - lastSendValueTime); if (elapsedTime >= duration) { if (abortTimeout !== null) { abortTimeout(); abortTimeout = null; } _emit(value); } else if (trailing) { trailingValue = value; if (abortTimeout === null) { abortTimeout = (0, create_timeout_1.createTimeout)(function () { abortTimeout = null; _emit(trailingValue); }, duration - elapsedTime); } } }); return function () { unsubscribe(); if (abortTimeout !== null) { abortTimeout(); } }; }; } exports.throttleTimeObservable = throttleTimeObservable;