.
This commit is contained in:
49
node_modules/rxjs/dist/cjs/internal/operators/throttle.js
generated
vendored
Normal file
49
node_modules/rxjs/dist/cjs/internal/operators/throttle.js
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.throttle = void 0;
|
||||
var lift_1 = require("../util/lift");
|
||||
var OperatorSubscriber_1 = require("./OperatorSubscriber");
|
||||
var innerFrom_1 = require("../observable/innerFrom");
|
||||
function throttle(durationSelector, config) {
|
||||
return lift_1.operate(function (source, subscriber) {
|
||||
var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;
|
||||
var hasValue = false;
|
||||
var sendValue = null;
|
||||
var throttled = null;
|
||||
var isComplete = false;
|
||||
var endThrottling = function () {
|
||||
throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();
|
||||
throttled = null;
|
||||
if (trailing) {
|
||||
send();
|
||||
isComplete && subscriber.complete();
|
||||
}
|
||||
};
|
||||
var cleanupThrottling = function () {
|
||||
throttled = null;
|
||||
isComplete && subscriber.complete();
|
||||
};
|
||||
var startThrottle = function (value) {
|
||||
return (throttled = innerFrom_1.innerFrom(durationSelector(value)).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));
|
||||
};
|
||||
var send = function () {
|
||||
if (hasValue) {
|
||||
hasValue = false;
|
||||
var value = sendValue;
|
||||
sendValue = null;
|
||||
subscriber.next(value);
|
||||
!isComplete && startThrottle(value);
|
||||
}
|
||||
};
|
||||
source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {
|
||||
hasValue = true;
|
||||
sendValue = value;
|
||||
!(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));
|
||||
}, function () {
|
||||
isComplete = true;
|
||||
!(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();
|
||||
}));
|
||||
});
|
||||
}
|
||||
exports.throttle = throttle;
|
||||
//# sourceMappingURL=throttle.js.map
|
||||
Reference in New Issue
Block a user