raf.js 639 B

123456789101112131415161718192021222324252627282930
  1. /**
  2. * requestAnimationFrame polyfill
  3. */
  4. import { isServer } from './index';
  5. var prev = Date.now();
  6. /* istanbul ignore next */
  7. function fallback(fn) {
  8. var curr = Date.now();
  9. var ms = Math.max(0, 16 - (curr - prev));
  10. var id = setTimeout(fn, ms);
  11. prev = curr + ms;
  12. return id;
  13. }
  14. /* istanbul ignore next */
  15. var root = isServer ? global : window;
  16. /* istanbul ignore next */
  17. var iRaf = root.requestAnimationFrame || fallback;
  18. /* istanbul ignore next */
  19. var iCancel = root.cancelAnimationFrame || root.clearTimeout;
  20. export function raf(fn) {
  21. return iRaf.call(root, fn);
  22. }
  23. export function cancel(id) {
  24. iCancel.call(root, id);
  25. }