Synchronous calls using RemoteObject

12,264

Solution 1

I achieved the same in two ways: First, as said above the use of state machines. It may get tricky at times. Second, the use of command queues - I think this is the best way to do it... but the downside is that the UI may not be very reflective in this time.

Solution 2

All IO in Flex is asynchronous. The typical pattern to deal with this is to use an AsyncResponder. For instance:

var t:AsyncToken = remoteObject.methodCall();
t.addResponder(new AsyncResponder(resultEvent, faultEvent));

Solution 3

think twice when u want it to be synchronous.

Do u know what synchronous mean? it will FREEZE your application until it receive data. Unless u are pretty sure that your remote calling can receive return value immediately (super fast network connection).

if your function call depends on each other, i would suggest you implement a state machine. e.g.

after 1st async call, your state becomes STATE_1, and your next function call will check on this state variable, to decide next move (ignore the current call or carry on).

my 2 cents.

Solution 4

If you want synchronous behavior, just add a wait after you make the call.

EDIT: I've added code for the chaining behavior I was talking about. Just replace the result handler each subsequent time you call the remoteObject.

...
remoteObject.function1(...);
...

private var resultHandler1(event:ResultEvent):void
{
    ...
    remoteObject.removeEventListener(resultHandler1);
    remoteObject.addEventListener(ResultEvent.RESULT, resultHandler2);
    remoteObject.function2(...);
}

private var resultHandler2(event:ResultEvent):void
{
    ...
}
Share:
12,264
sangupta
Author by

sangupta

A Java/J2EE/Flex/AIR developer who's passionate about programming. Reading and asking questions is the best way to hone skills.

Updated on June 04, 2022

Comments

  • sangupta
    sangupta almost 2 years

    Is there a way to make synchronous calls using RemoteObject in Flex?