Задать вопрос

Указать количество вызовов функции?

Есть некая функция, что отрисовывает canvas:
function anim(){
  window.requestAnimationFrame(anim);

  ctx.fillStyle = 'rgba(0, 0, 0, 0)';
  ctx.fillRect(0, 0, w, h);

    for(var i = 0; i < waves.length; ++i){
      var wave = waves[i];
      if(frame % waveTileTime === 0){
        var len = ++waveLengths[i];

        for(var j = 0; j < len; ++j){
          drawTile(-len + j + 1, -j, wave)
          drawTile(-len + j + 1, j, wave);
        }
      }
    }
}


И например ее вызов:
a.onclick = function(){
  anim();
}

Как мне при вызове функции или где-то еще указать количество раз, сколько я хочу, чтобы функция выполнялась?
  • Вопрос задан
  • 2223 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@teslor
Если у вас в коде много мест, где нужно вызывать какую-то функцию несколько раз подряд, тогда оптимальнее всего будет написать декоратор.
Если не нужно передавать контекст и аргументы (как в вашем случае), то наиболее простой вариант:

// Декоратор
function chain(func) {
    return function(t) {
        while(t--) func();
    }
}

// Создаем новую функцию, которая будет вызывать anim заданное количество раз.
// Можно не создавать новую функцию, а перезаписать существующую: anim = chain(anim)
anim_new = chain(anim); 

 // anim выполнится 10 раз
anim_new(10);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы