Joe,

Callback function receives PE instance as first argument, so here  
would be the self-stop mechanism :

        function(executer) { executer.stop() }.repeat()

Best,
Samuel.

On 26 juin 09, at 15:46, joe t. wrote:

>
> Tobie,
>> Function.prototype.repeat = function(interval) {
>> var fn = this;
>> if (arguments.length > 1) {
>>   // not testsed but you get the idea
>>   fn = fn.curry.apply(fn, Array.prototype.slice.call(arguments, 1));
>> }
>> return new PeriodicalExecuter(fn, interval);
>>
>> }
>
> If sticking to the PE approach there's no internal self-stop mechanism
> (is there?), which i see as a nice touch in the above proposal (for
> what my opinion is worth).
> What about (from 1.6.1_rc2):
>
> onTimerEvent: function() {
>  if (!this.currentlyExecuting) {
>    try {
>      this.currentlyExecuting = true;
>      if (this.execute()===false) // MOD
>        this.stop();              // NEW
>    } catch(e) {
>      /* empty catch for clients that don't support try/finally */
>    }
>    finally {
>      this.currentlyExecuting = false;
>    }
>  }
> }
>
> Just tossing in my 2 cents because i'm intrigued by that feature.
> -joe t.
>
> On Jun 26, 6:02 am, Tobie Langel <tobie.lan...@gmail.com> wrote:
>>> How to stop it? arguments?
>>
>> Stopping it is as easy as:
>>
>> pe = foo.repeat();
>> pe.stop();
>>
>> Passing arguments would require some simple currying:
>>
>> Function.prototype.repeat = function(interval) {
>>  var fn = this;
>>  if (arguments.length > 1) {
>>    // not testsed but you get the idea
>>    fn = fn.curry.apply(fn, Array.prototype.slice.call(arguments, 1));
>>  }
>>  return new PeriodicalExecuter(fn, interval);
>>
>> }
>>> This may come to you twice, but this is slightly updated:
>>
>>> http://jsbin.com/opimu
>>
>>> This repeat() method def is 775Bytes, accepts arguments like delay/ 
>>> defer,
>>> uses setTimeout (returns initial setTimeout index) and has a  
>>> stopping
>>> mechanism.
>>
>> What's the point in returning setTimeout index? That will set
>> expectations which can't be met: developers will expect to be able to
>> stop the functions calls by clearing it.
>>
>> Are you sure your proposal fixes all of the small issues PE fixes?  
>> For
>> example, does it guarantee that the function will continue being
>> called if it happens to once throw an error. Does it avoid calling  
>> the
>> function again if a previous function is still executing, etc.?
>>
>> I understand your eagerness to move away from a model you dislike,  
>> but
>> that shouldn't make you throw away all of the work that's been put
>> into previous solutions.
>>
>> FWIW, I just noticed a patch wasn't applied to PE in current trunk
>> (it's missing a throw statement).
>>
>> Best,
>>
>> Tobie
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype: Core" group.
To post to this group, send email to prototype-core@googlegroups.com
To unsubscribe from this group, send email to 
prototype-core-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to