Simply use a time-diff approach locking the steps to the difference between old and new time:
DEMO
Start with getting current time:
var oldTime = getTime();
/// for convenience later
function getTime() {
return (new Date()).getTime();
}
Then in your loop:
function Update(){
var newTime = getTime(), /// get new time
diff = newTime - oldTime; /// calc diff between old and new time
oldTime = newTime; /// update old time
...
currentAngle += diff * 0.001; /// use diff to calc angle step
/// reset angle
currentAngle %= 2 * Math.PI;
raf(Update);
}
Using this approach will bind the animation to time instead of FPS.
Update For one minute I thought MODing the angle wouldn't work with floats, but you can (had to double check) so code updated.