bufferTime.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var rxjs_1 = require("rxjs");
  4. var internal_compatibility_1 = require("rxjs/internal-compatibility");
  5. var operators_1 = require("rxjs/operators");
  6. /* tslint:enable:max-line-length */
  7. /**
  8. * Buffers the source Observable values for a specific time period.
  9. *
  10. * <span class="informal">Collects values from the past as an array, and emits
  11. * those arrays periodically in time.</span>
  12. *
  13. * <img src="./img/bufferTime.png" width="100%">
  14. *
  15. * Buffers values from the source for a specific time duration `bufferTimeSpan`.
  16. * Unless the optional argument `bufferCreationInterval` is given, it emits and
  17. * resets the buffer every `bufferTimeSpan` milliseconds. If
  18. * `bufferCreationInterval` is given, this operator opens the buffer every
  19. * `bufferCreationInterval` milliseconds and closes (emits and resets) the
  20. * buffer every `bufferTimeSpan` milliseconds. When the optional argument
  21. * `maxBufferSize` is specified, the buffer will be closed either after
  22. * `bufferTimeSpan` milliseconds or when it contains `maxBufferSize` elements.
  23. *
  24. * @example <caption>Every second, emit an array of the recent click events</caption>
  25. * var clicks = Rx.Observable.fromEvent(document, 'click');
  26. * var buffered = clicks.bufferTime(1000);
  27. * buffered.subscribe(x => console.log(x));
  28. *
  29. * @example <caption>Every 5 seconds, emit the click events from the next 2 seconds</caption>
  30. * var clicks = Rx.Observable.fromEvent(document, 'click');
  31. * var buffered = clicks.bufferTime(2000, 5000);
  32. * buffered.subscribe(x => console.log(x));
  33. *
  34. * @see {@link buffer}
  35. * @see {@link bufferCount}
  36. * @see {@link bufferToggle}
  37. * @see {@link bufferWhen}
  38. * @see {@link windowTime}
  39. *
  40. * @param {number} bufferTimeSpan The amount of time to fill each buffer array.
  41. * @param {number} [bufferCreationInterval] The interval at which to start new
  42. * buffers.
  43. * @param {number} [maxBufferSize] The maximum buffer size.
  44. * @param {Scheduler} [scheduler=asyncScheduler] The scheduler on which to schedule the
  45. * intervals that determine buffer boundaries.
  46. * @return {Observable<T[]>} An observable of arrays of buffered values.
  47. * @method bufferTime
  48. * @owner Observable
  49. */
  50. function bufferTime(bufferTimeSpan) {
  51. var length = arguments.length;
  52. var scheduler = rxjs_1.asyncScheduler;
  53. if (internal_compatibility_1.isScheduler(arguments[arguments.length - 1])) {
  54. scheduler = arguments[arguments.length - 1];
  55. length--;
  56. }
  57. var bufferCreationInterval = null;
  58. if (length >= 2) {
  59. bufferCreationInterval = arguments[1];
  60. }
  61. var maxBufferSize = Number.POSITIVE_INFINITY;
  62. if (length >= 3) {
  63. maxBufferSize = arguments[2];
  64. }
  65. return operators_1.bufferTime(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler)(this);
  66. }
  67. exports.bufferTime = bufferTime;
  68. //# sourceMappingURL=bufferTime.js.map