Как делаю я. Обычно у меня есть функция основная функция называю ее handler. Она постоянно вызывается. А в ней уже вызываются другие функции. Ну вот мой пример
https://jsfiddle.net/twobomb/b05nmjs5/
Разработка на канвасе у меня обычно начинается со следующего кода
var canvas, ctxW = 500, ctxH = 500,ctx;
window.onload = function(){
canvas = document.createElement("canvas");
canvas.width = ctxW;
canvas.height = ctxH;
document.body.appendChild(canvas);
ctx = canvas.getContext("2d");
handler();
}
function handler () {
ctx.clearRect(0,0,ctxW,ctxH);
//Тут вызов функций и прочие реализации
setTimeout(handler,1000/60);
}