[mochikit] Re: Defered.setFinal

2009-07-20 Thread Per Cederberg

Slow response here, but I finally got around to committing this to
Subversion (r1533):

  http://trac.mochikit.com/changeset/1533

Modified the patch a bit further to account for some additional cases.
Also added tests and documentation.

@Bob: Can you please review this change? I have the feeling that I've
still missed one or two corner cases... Also, the mochikit.com and
trac.mochikit.com site seems slow from here... High server load
recently?

@Amit: Please check that my additional controls doesn't break you use case.

Cheers,

/Per

On Wed, Feb 11, 2009 at 14:52, Amit Mendaparamendapara.a...@gmail.com wrote:

 Even better...

 if (this.chain.length == 0  this._finalizer) {
    this._finalized = this._finalizer(res);
 }

 This will allow us to finalize the deferred based on some
 conditions...

 - Amit

 On Feb 11, 12:52 am, Per Cederberg cederb...@gmail.com wrote:
 You mean like this?

     setFinalizer: function(cb) {
         this._finalizer = cb;
     }

     ...

     if (this.chain.length == 0  this._finalizer) {
         this.finalized = true;
         if (res instanceof Error) {
             this._finalizer(res);
         }
     }

 Would that be acceptable to Amit as well? In that case we would add a
 default error handler (called a finalizer), which would also be what
 I'm planning to use this for.

 Other opinions?

 /Per

 On Tue, Feb 10, 2009 at 5:48 PM, Bob Ippolito b...@redivi.com wrote:
  Finalizing a Deferred should ensure that no further callback/errbacks
  are registered and it should attach a default error handler (success
  should be no-op). The most common problem I've seen with Deferreds is
  that an error occurs but nobody attached an error handler that far
  down the stack. In Python they work around this by having a finalizer
  so that you see the error when the object gets GC'ed, but that's not
  really possible in JS since you don't have finalizers or weak
  references.

  On Tue, Feb 10, 2009 at 8:04 AM, Per Cederberg cederb...@gmail.com wrote:

  I think this is a good idea. I needed something similar too, so I
  ended up writing an ugly hack that worked most of the time...

     d.addBoth(function (res) {d.addBoth(finalFunc); return res; });

  It adds new callback once the first deferred result drops in,
  hopefully after all the other callbacks have been added...

  But a more formally correct solution would probably be a good idea.

  Cheers,

  /Per

  On Tue, Feb 10, 2009 at 2:30 PM, Amit Mendapara
  mendapara.a...@gmail.com wrote:
  Hi Per,

  I have just started again improving the MochiKit Extensions. While
  creating tests for the Ajax module, I found one problem (not bug, but
  specific to the feature I'm trying to implement). I registered a
  callback which should be fired at the end of all registered callbacks.

  I achieved by modifying Async.js with a new method `setFinal` (not
  addFinal as there should be only one finalizer)  which gets fired when
  `chain.length == 0`. It's simple. I would we happy if you add one such
  function in MochiKit.Async.Defered...

  Regards
  --
  Amit
 


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



[mochikit] Re: Defered.setFinal

2009-07-20 Thread Amit Mendapara

Hi Per,

I have just tested the changes with the Ajax extension module and it
works as expected. Thanks for considering adding this feature. This
would help me creating jQuery compatible Ajax module for Mochikit
extensions project.

Currently, I'm quite busy with some another work but supposed to come
back on MochiKit Extensions soon...

Regards
--
Amit Mendapara

On Jul 20, 2:26 pm, Per Cederberg cederb...@gmail.com wrote:
 Slow response here, but I finally got around to committing this to
 Subversion (r1533):

  http://trac.mochikit.com/changeset/1533

 Modified the patch a bit further to account for some additional cases.
 Also added tests and documentation.

 @Bob: Can you please review this change? I have the feeling that I've
 still missed one or two corner cases... Also, the mochikit.com and
 trac.mochikit.com site seems slow from here... High server load
 recently?

 @Amit: Please check that my additional controls doesn't break you use case.

 Cheers,

 /Per

 On Wed, Feb 11, 2009 at 14:52, Amit Mendaparamendapara.a...@gmail.com wrote:

  Even better...

  if (this.chain.length == 0  this._finalizer) {
     this._finalized = this._finalizer(res);
  }

  This will allow us to finalize the deferred based on some
  conditions...

  - Amit

  On Feb 11, 12:52 am, Per Cederberg cederb...@gmail.com wrote:
  You mean like this?

      setFinalizer: function(cb) {
          this._finalizer = cb;
      }

      ...

      if (this.chain.length == 0  this._finalizer) {
          this.finalized = true;
          if (res instanceof Error) {
              this._finalizer(res);
          }
      }

  Would that be acceptable to Amit as well? In that case we would add a
  default error handler (called a finalizer), which would also be what
  I'm planning to use this for.

  Other opinions?

  /Per

  On Tue, Feb 10, 2009 at 5:48 PM, Bob Ippolito b...@redivi.com wrote:
   Finalizing a Deferred should ensure that no further callback/errbacks
   are registered and it should attach a default error handler (success
   should be no-op). The most common problem I've seen with Deferreds is
   that an error occurs but nobody attached an error handler that far
   down the stack. In Python they work around this by having a finalizer
   so that you see the error when the object gets GC'ed, but that's not
   really possible in JS since you don't have finalizers or weak
   references.

   On Tue, Feb 10, 2009 at 8:04 AM, Per Cederberg cederb...@gmail.com 
   wrote:

   I think this is a good idea. I needed something similar too, so I
   ended up writing an ugly hack that worked most of the time...

      d.addBoth(function (res) {d.addBoth(finalFunc); return res; });

   It adds new callback once the first deferred result drops in,
   hopefully after all the other callbacks have been added...

   But a more formally correct solution would probably be a good idea.

   Cheers,

   /Per

   On Tue, Feb 10, 2009 at 2:30 PM, Amit Mendapara
   mendapara.a...@gmail.com wrote:
   Hi Per,

   I have just started again improving the MochiKit Extensions. While
   creating tests for the Ajax module, I found one problem (not bug, but
   specific to the feature I'm trying to implement). I registered a
   callback which should be fired at the end of all registered callbacks.

   I achieved by modifying Async.js with a new method `setFinal` (not
   addFinal as there should be only one finalizer)  which gets fired when
   `chain.length == 0`. It's simple. I would we happy if you add one such
   function in MochiKit.Async.Defered...

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