throttleByAnimationFrame.js 817 B

1234567891011121314151617181920212223242526272829
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _raf = _interopRequireDefault(require("./raf"));
  8. function throttleByAnimationFrame(fn) {
  9. let requestId;
  10. const later = args => () => {
  11. requestId = null;
  12. fn(...args);
  13. };
  14. const throttled = function () {
  15. if (requestId == null) {
  16. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  17. args[_key] = arguments[_key];
  18. }
  19. requestId = (0, _raf.default)(later(args));
  20. }
  21. };
  22. throttled.cancel = () => {
  23. _raf.default.cancel(requestId);
  24. requestId = null;
  25. };
  26. return throttled;
  27. }
  28. var _default = exports.default = throttleByAnimationFrame;