Best way to have event occur n times?
<p>I use the following code to create countdowns in Javascript. n is the number of times to repeat, freq is the number of milliseconds to wait before executing, funN is a function to call on each iteration (typically a function that updates part of the DOM) and funDone is the function to call when the countdown is complete. </p>

<pre><code>function timer(n, freq, funN, funDone)
{
 if(n == 0){
  funDone();
 }else{
  setTimeout(function(){funN(n-1); timer(n-1, freq, funN, funDone);}, freq);  
 }
}
</code></pre>

<p>It can be called like so:</p>

<pre><code>    timer(10,
      1000, /* 1 second */
      function(n){console.log("(A) Counting: "+n);},
      function() {console.log("(A) Done!");}
     );

    timer(10,
      500,
      function(n){console.log("(B) Counting: "+n);},
      function() {console.log("(B) Done!");}
     );
</code></pre>

<p>The advantage of this is that I can call timer() as many times as I want without worrying about global variables etc. Is there a better way to do this? Is there a clean way to make setInterval stop after a certain number of calls (without using global variables)? This code also creates a new lambda function with each call to setTimeout which seems like it could be problematic for large countdowns (I'm not sure how javascript's garbage collector handles this). </p>

<p>Is there a better way to do this? Thanks.</p>
