--- In [email protected], "Paul Andrews" <[EMAIL PROTECTED]> wrote:
>
> ----- Original Message ----- 
> From: "Mark Carter" <[EMAIL PROTECTED]>
> To: <[email protected]>
> Sent: Wednesday, December 10, 2008 8:34 AM
> Subject: [flexcoders] Best practice for calling asynchronous 
functions?
> 
> 
> >
> > In my app, I make a wide variety of XML-RPC calls. Now, to avoid 
having to
> > add/remove listeners all over the place, I've created a class 
(facade?) 
> > with
> > functions like:
> >
> > function save(xml:XML, successFunc:Function, 
failureFunc:Function):void;
> > function load(id:String, successFunc:Function, 
failureFunc:Function):void;
> >
> > Note, the class' state does not change when any of these 
functions are
> > called.
> >
> > The class makes the necessary XML-RPC call and listens to the 
appropriate
> > events before calling the relevant success or failure function. 
The class
> > guarantees that either the successFunc or the failureFunc will be 
called 
> > at
> > some point (but never both).
> >
> > This makes my calling code very neat:
> >
> > save(myXML, function(id:String):void {
> >    Alert.show("Successfully saved XML using id: " + id);
> >    // now do the next step
> > }, function(msg:String):void {
> >    Alert.show("Failed to save because: " + msg);
> >    // now rollback
> > });
> >
> > One obvious drawback of this is that its not so easy to add 
multiple
> > listeners to, say, the save operation. But, in my situation, I 
never need
> > to.
> 
> I would have thought it was very easy to add multiple listeners for 
the save 
> operation - just have the single successFunc call multiple 
functions. The 
> real problem may be that writing inline functions could make your 
code 
> difficullt to follow if they get too complex - I'd probably use 
inline 
> functions only for trivial cases.
> 
> Effectively you've replaced event listeners with callback 
functions. I don't 
> see the harm in it and I know a lot of people like using callbacks 
rather 
> than full blown event handling.
> It does look quite neat and enforce cleaning up listeners.

Another way to handle it is with a token.  The token "rides" the 
event, so there's no cleanup to be done...Once the event is handled 
the reference to it goes away, and so does the token and its 
responders.

http://flexdiary.blogspot.com/2008/11/more-thoughts-on-remoting.html

Reply via email to