--- In [email protected], Mark Carter <[EMAIL PROTECTED]> wrote:
>
> 
> Thanks for all the responses.
> 
> I hadn't really looked into the ASyncToken until now. However, for 
me it
> seems that using the ASyncToken would be limited to the 
implementation of
> the, for example, save(XML, Function, Function) method.
> 
> The calling code doesn't need to know about it. 

Right.  The calling code doesn't need to do anything different.  The 
change is inside your method.

Here's an example:

/*      Execute method.  If calling object passes in result and fault 
handlers,
                        those are used.  Otherwise, the defaults are 
used.   */
                public static function execute(categoryID:int=-1, 
searchString:String=null, 
                        resultHandler:Function=null, 
faultHandler:Function=null):void{
                        if (_channels.channels.length==0) {
                                throw new Error('No endpoint 
specified for GetCategories command Remote Object');
                        }
                        //set up remote object
                        _ro.channelSet=_channels;
                        _ro.destination = 'AMF_Category';
                        _ro.source = 'AMF_Category';
                        //set up a token so we can tell the result of 
this call from other calls
                        var token:AsyncToken=_ro.getServicesCount
(categoryID>-1?categoryID: null, searchString);
                        //assign the result and fault handlers from 
the calling object
                        token.addResponder(new Responder(!
(resultHandler==null)?resultHandler:countLoaded, 
                                                            !
(faultHandler==null)? faultHandler: loadFailed));
                }
                /*      trace out the return since we don't know 
where to put it */
                private static function countLoaded
(e:ResultEvent):void{
                        trace(e.result.toString() + ' profiles');
                }
                private static function loadFailed(e:FaultEvent):void{
                        trace(e.fault);
                }

> In my opinion this is neater
> than something like:
> 
> var asyncToken:ASyncToken = save(xml);
> asyncToken.addResponder(...

Suit yourself.  You weren't satisfied with what you were using.  I 
offered an alternative.
 
> Also, I don't like adding responders after the call has been made. 
I know it
> works, but still...

Me neither.  I'm not sure why they built it this way, but 
unfortunately that's what we have.  Just don't dispatch an event in 
between LOL.

> Maybe I should start a new topic for this next question, but...
> 
> ...in my implementation, I create a new HTTPService for each call. 
Any ideas
> how (in)efficient this is?  

I'm thinking it's pretty bad.

> As you can imagine, it keeps the implementation
> much simpler. No need for the ASyncToken. Just add new listeners 
each time a
> call is made. Everything is garbage collected..... Oh, hang on, 
what keeps a
> reference to the HTTPService?????

Good question.  What did you do with all the old eventListeners you 
were complaining about in your original post?

Reply via email to