UNPKG

nanoraf

Version:
36 lines (26 loc) 850 B
'use strict' var assert = require('assert') module.exports = nanoraf // Only call RAF when needed // (fn, fn?) -> fn function nanoraf (render, raf) { assert.equal(typeof render, 'function', 'nanoraf: render should be a function') assert.ok(typeof raf === 'function' || typeof raf === 'undefined', 'nanoraf: raf should be a function or undefined') if (!raf) raf = window.requestAnimationFrame var redrawScheduled = false var args = null return function frame () { if (args === null && !redrawScheduled) { redrawScheduled = true raf(function redraw () { redrawScheduled = false var length = args.length var _args = new Array(length) for (var i = 0; i < length; i++) _args[i] = args[i] render.apply(render, _args) args = null }) } args = arguments } }