Git Product home page Git Product logo

to-raf's Introduction

to-raf

The interface of requestAnimationFrame is difficult and rigid to use. to-raf is a throttling adapter to requestAnimationFrame. If a number of exepressions of toRaf(f) are executed in an interval of a frame, requestAnimationFrame throttles them using the last one. If no expression in an interval of a frame is executed, it does nothing.

Creation

getToRAF creates one animation closure. If you want two independent animations, create two.

import getToRAF from 'to-raf';

const toRAF = getToRAF();
const toRAFa = getToRAF();

Usage

toRAF(otherFunctionForEachTime); // `otherFunctionForEachTime` does not need to be a single ref.

Example for react.js

import getToRAF from 'to-raf';
// ...

const toRAF = getToRAF();

export default function MouseCage() {
    // ...
    const handleMouseMove = e => {
        toRAF(() => setX(e.clientX))
    };
    return (
        <div onMouseMove={handleMouseMove}>MouseCage {x}</div>
    );
}

Test

This code shows how it works.

let x = 0;
const createNewFunctionEachTime = () => timestamp => console.log(x++, timestamp);
const id = setInterval(() => {
    toRAF(createNewFunctionEachTime()); // function could be mutable :) wow
}, 1); // it prints 0 ~ 61 for 1 sec on my machine
setTimeout(() => {
    clearTimeout(id);
}, 1000);

to-raf's People

Contributors

wooheemusic avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.