this.__rpc.addListener( "completed", function(e)
{
this.__result = e.getData();
}, this );
alert( this.__result );
Here, you pass the callback function to addListener which then returns
immediately. Your alert is called before the result is ready.
It is a bit strange to get use to at first, and you will no doubt fight
the change, but you have to write your code so it works asyncrounously.
Something like this (changed marked ***like this***):
callAsync: function( method, args, ***fHandler***)
{
var handler = function( result, exc, id )
{
if ( exc == null )
{
*** fHandler(result); ***
}
else {
alert( "RPC-Exception: " + exc + " ( ID: " + id + ")" );
}
};
this.__rpcRunning = this.__rpc.callAsync( handler, method, args);
}
Then later in your code:
var rpc = new qxgui.utils.Rpc;
rpc.callAsync( "doLogin", [ username, userpw ], function(result)
{
alert(result);
});
sNIk wrote:
> hello!
>
> i would prefer the first option. ;)
>
> i changed my code to this:
>
> callAsync: function( method, args )
> {
> var handler = function( result, exc, id )
> {
> if ( exc == null )
> {
> //alert( result );
> }
> else {
> alert( "RPC-Exception: " + exc + " ( ID: " + id + ")" );
> }
> };
>
> this.__rpcRunning = this.__rpc.callAsync( handler, method, args
> );
>
> this.__rpc.addListener( "completed", function(e)
> {
> this.__result = e.getData();
> }, this );
>
> alert( this.__result );
> }
>
> but i get "null" as value .. whats wrong? :)
>
>
> Noggin182 wrote:
>> Hi Again,
>> The call to the backend is asyncrounous, your
>> qxgui.utils.Rpc.callAsync() function will return immediately.
>>
>> There are two ways forward, you can either change your class so it fires
>> an "complete" event, or change the function so it accepts a callback.
>>
>> From the callAsync() function it looks like you are expierenced enough
>> to do either without help.
>>
>> The two choices would make your calling code look like this:
>>
>> Option 1.)
>>
>> var rpc = new qxgui.utils.Rpc;
>> rpc.callAsync( "doLogin", [ username, userpw ] );
>> rpc.addListener("complete", function(e)
>> {
>> var result = e.getData();
>> });
>>
>> Option 2.)
>>
>> var rpc = new qxgui.utils.Rpc;
>> rpc.callAsync( "doLogin", [ username, userpw ], function(result)
>> {
>> alert(result);
>> });
>>
>>
>> If you need more help, just decide first which one best meets your
>> requirements and let us know :)
>>
>> HTH,
>> Matt
>>
>>
>> sNIk wrote:
>>> hello there. i want to simplify the usage of rpc and ran into a problem
>>> with
>>> the handler. example:
>>>
>>> usage:
>>> -------------------------------------------------------------------------------------
>>>
>>> var rpc = new qxgui.utils.Rpc;
>>> rpc.callAsync( "doLogin", [ username, userpw ] );
>>> var result = rpc.getResult();
>>>
>>>
>>> class:
>>> -------------------------------------------------------------------------------------
>>>
>>> qx.Class.define("qxgui.utils.Rpc",
>>> {
>>> extend: qx.core.Object,
>>>
>>> construct: function( url, service )
>>> {
>>> // standard-paramenter
>>> some statements ...
>>>
>>> // konfigurieren
>>> rpc = new qx.io.remote.Rpc( url, service );
>>>
>>> rpc.setTimeout( this.__timeout );
>>> rpc.setCrossDomain( this.__crossDomain );
>>>
>>> this.__rpc = rpc;
>>> },
>>>
>>> members:
>>> {
>>> // eigenschaften
>>>
>>> ////////////////////////////////////////////////////////////////////////
>>>
>>> __url: "xxx",
>>> __service: "xxx",
>>> __timeout: 5000,
>>> __crossDomain: true,
>>>
>>> __rpc: null,
>>> __id: null,
>>> __exc: null,
>>> __result: null,
>>> __rpcRunning: null,
>>>
>>>
>>> // methoden
>>>
>>> ////////////////////////////////////////////////////////////////////////
>>>
>>> callAsync: function( method, args )
>>> {
>>> var handler = function( result, exc, id )
>>> {
>>> if ( exc == null )
>>> {
>>> this.__result = result;
>>> }
>>> else {
>>> alert( "RPC-Exception: " + exc );
>>> }
>>> };
>>>
>>> this.__rpcRunning = this.__rpc.callAsync( handler, method,
>>> args
>>> );
>>> },
>>>
>>> isRpcRunning: function()
>>> {
>>> return this.__rpcRunning;
>>> },
>>>
>>> getResult: function()
>>> {
>>> return this.__result;
>>> }
>>> }
>>> });
>>>
>>>
>>> how do i get the result into the right scope?
>>
>> ------------------------------------------------------------------------------
>> The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
>> production scanning environment may not be a perfect world - but thanks to
>> Kodak, there's a perfect scanner to get the job done! With the NEW KODAK
>> i700
>> Series Scanner you'll get full speed at 300 dpi even with all image
>> processing features enabled. http://p.sf.net/sfu/kodak-com
>> _______________________________________________
>> qooxdoo-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>>
>
------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
qooxdoo-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel