Tracy,
I was trying to illustrate what I had understood from what has been said: "Flex
asynchronous methods get queued up and are only invoked once ALL synchronous
calls in the same block get executed. "
My example might not be the best but since the http.send() was in a function on
its own, i.e a block, the server invocation will happen upon leaving that
function.
it is true that we are setting the responder right after that function call.
But assuming that in my doit function I had:
public function doit():void
{
callServer();
// do some other stuff
callAnotherComputingAndStallingMethod();
// and now add the responder
asyncToken.addResponder(...);
}
well, my chances for the server responding after I set the responder are
slimmer. As in the other scenario where it's all in 1 method call, and the
server call only gets invoked at the end of the method after I set the
responder.
Cheers,
--- In [email protected], "Tracy Spratt" <tr...@...> wrote:
>
> ".chances of it working are reduced." Why do you say that?
>
>
>
> Tracy Spratt,
>
> Lariat Services, development services available
>
> _____
>
> From: [email protected] [mailto:[email protected]] On
> Behalf Of Mehdi
> Sent: Wednesday, April 29, 2009 11:49 AM
> To: [email protected]
> Subject: [flexcoders] Re: How come setting the responder (async token) after
> the server call does WORKS???
>
>
>
>
>
>
>
>
> I see. So shall I read your response as:
> Flex asynchronous methods get queued up and are only invoked once ALL
> synchronous calls in the same block get executed.
>
> So I were to have the following:
>
> var asyncToken:ASyncToken
> public function callServer():void
> {
> asyncToken= httpsrv.send();
> }
>
> public function doit():void
> {
> callServer();
> asyncToken.addResponder(...);
> }
> <mx:button click="doit()"/>
>
> So, in this case, my chances of it working are reduced... (not the 100%
> anymore). Is that right?
> thks.
>
> --- In flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com,
> "Adnan Doric" <astronaute@> wrote:
> >
> > The key word is "asynchronous".
> >
> > "httpsrv.send()" is asynchronous so it gets executed after all synchronous
> statements (addResponder is synchronous) in the same block.
> >
> > cheers,
> > Adnan
> >
> > --- In flexcod...@yahoogro <mailto:flexcoders%40yahoogroups.com> ups.com,
> "Mehdi" <elextraana@> wrote:
> > >
> > > This is a question that has been bothered me for some time.
> > > You know how in Flex you can invoke a service (say httpservice for
> instance) which returns a token. After that you set the responder on the
> token. I.e.:
> > >
> > > var asyncToken:ASyncToken = httpsrv.send();
> > > asyncToken.addResponder(...)
> > >
> > > We set the responder/handler AFTER the call has been set. Its very
> awkward but it does work. I was hoping someone could explain this to me.
> Thank you.
> > >
> > > Flex being single threaded, the call to httpsrv.send() should actually
> invokes the server and not get into the second line about the responder
> until the call has been at least issued.
> > > But that's not how it works I guess. So, I am assuming the call is
> queued somewhere, until....until when???
> > >
> > > Cheers
> > >
> >
>