diff --git a/src/raf.ts b/src/raf.ts new file mode 100644 index 00000000..84fad014 --- /dev/null +++ b/src/raf.ts @@ -0,0 +1,13 @@ +let raf = (fn: () => void) => +setTimeout(fn, 16); +let caf = (num: number) => clearTimeout(num); + +if (typeof window !== 'undefined') { + raf = requestAnimationFrame; + caf = cancelAnimationFrame; +} + +export default function wrapperRaf(callback: () => void): number { + return raf(callback); +} + +wrapperRaf.cancel = caf; diff --git a/tests/raf.test.js b/tests/raf.test.js new file mode 100644 index 00000000..374053e5 --- /dev/null +++ b/tests/raf.test.js @@ -0,0 +1,19 @@ +import raf from '../src/raf'; + +describe('raf', () => { + it('test Raf', done => { + jest.useRealTimers(); + + let bamboo = false; + raf(() => { + bamboo = true; + }); + + expect(bamboo).toBe(false); + + raf(() => { + expect(bamboo).toBe(true); + done(); + }); + }); +});