Controlando fps con requestAnimationFrame?

Parece querequestAnimationFrame Es la manera de facto de animar cosas ahora. Funcionó bastante bien para mí en su mayor parte, pero en este momento estoy tratando de hacer algunas animaciones de lienzo y me preguntaba: ¿hay alguna forma de asegurarme de que se ejecuta a un cierto fps? Entiendo que el propósito de rAF es para animaciones consistentemente suaves, y podría correr el riesgo de hacer que mi animación sea entrecortada, pero ahora parece que se ejecuta a velocidades drásticamente diferentes bastante arbitrariamente, y me pregunto si hay una manera de combatir que de alguna manera

Yo usosetInterval pero quiero las optimizaciones que ofrece rAF (especialmente deteniéndose automáticamente cuando la pestaña está enfocada).

En caso de que alguien quiera ver mi código, es más o menos:

animateFlash: function() {
    ctx_fg.clearRect(0,0,canvasWidth,canvasHeight);
    ctx_fg.fillStyle = 'rgba(177,39,116,1)';
    ctx_fg.strokeStyle = 'none';
    ctx_fg.beginPath();
    for(var i in nodes) {
        nodes[i].drawFlash();
    }
    ctx_fg.fill();
    ctx_fg.closePath();
    var instance = this;
    var rafID = requestAnimationFrame(function(){
        instance.animateFlash();
    })

    var unfinishedNodes = nodes.filter(function(elem){
        return elem.timer < timerMax;
    });

    if(unfinishedNodes.length === 0) {
        console.log("done");
        cancelAnimationFrame(rafID);
        instance.animate();
    }
}

Donde Node.drawFlash () es solo un código que determina el radio basado en una variable de contador y luego dibuja un círculo.

Respuestas a la pregunta(8)

Su respuesta a la pregunta