34 lines
1.4 KiB
JavaScript
34 lines
1.4 KiB
JavaScript
|
import { __values } from "tslib";
|
||
|
import { EMPTY } from '../observable/empty';
|
||
|
import { operate } from '../util/lift';
|
||
|
import { createOperatorSubscriber } from './OperatorSubscriber';
|
||
|
export function takeLast(count) {
|
||
|
return count <= 0
|
||
|
? function () { return EMPTY; }
|
||
|
: operate(function (source, subscriber) {
|
||
|
var buffer = [];
|
||
|
source.subscribe(createOperatorSubscriber(subscriber, function (value) {
|
||
|
buffer.push(value);
|
||
|
count < buffer.length && buffer.shift();
|
||
|
}, function () {
|
||
|
var e_1, _a;
|
||
|
try {
|
||
|
for (var buffer_1 = __values(buffer), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) {
|
||
|
var value = buffer_1_1.value;
|
||
|
subscriber.next(value);
|
||
|
}
|
||
|
}
|
||
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
||
|
finally {
|
||
|
try {
|
||
|
if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) _a.call(buffer_1);
|
||
|
}
|
||
|
finally { if (e_1) throw e_1.error; }
|
||
|
}
|
||
|
subscriber.complete();
|
||
|
}, undefined, function () {
|
||
|
buffer = null;
|
||
|
}));
|
||
|
});
|
||
|
}
|
||
|
//# sourceMappingURL=takeLast.js.map
|