--- In [email protected], Mark Carter <c...@...> wrote:
<stuff snipped>
> Amy-28 wrote:
> >
> >> 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?
> >
>
> My current implementation has something like:
>
> function save(xml:XML, successFunc:Function,
failureFunc:Function):void {
> var service:HTTPService = new HTTPService();
> ...
> service.addEventListener(ResultEvent.RESULT,
> function(evt:ResultEvent):void {
> trace("Successfully saved XML");
> successFunc();
> });
> service.send(); // called after the event listeners have been
added :)
> }
>
> That's it. The successFunc and failureFunc are only scoped to the
calling
> code's method and so should be garbage collected when the service
is garbage
> collected.
>
> What I don't know is when the service is garbage collected? I'm
assuming not
> before the result or fault event is fired!
My understanding is that anonymous functions _cannot_ get garbage
collected unless you use weak references when you add them. Which
means there's a really good chance they'll get garbage collected
before they get called.
HTH;
Amy