On Wed, May 6, 2009 at 9:24 AM, sNIk <[email protected]> wrote:
>
> hello. at first the code ...
>
> qx.Class.define("qxgui.reg.MenuXML",
> {
> extend: qx.core.Object,
> type: "singleton",
>
> construct: function()
> {
> var rpc = new qxgui.utils.Rpc;
>
> rpc.callAsync( "getMenuXml", null, function( result )
> {
> qxgui.reg.MenuXML.getInstance().setMenu( result );
> });
> },
>
> members:
> {
> // eigenschaften
>
> ////////////////////////////////////////////////////////////////////////
>
> __menuxml: null,
>
>
> // methoden
>
> ////////////////////////////////////////////////////////////////////////
>
> setMenu: function( menuxml )
> {
> this.__menuxml = menuxml;
> },
>
> getMenu: function()
> {
> return this.__menuxml;
> }
>
> }
> });
>
> usage: var menu = qxgui.reg.MenuXML.getInstance().getMenu();
>
> now back to my problem ... when i run alert( menuxml ) in setMenu, i get
> the
> right output (some xml stuff). actually, the result is saved in the
> property
> __menuxml, right?
>
> but alert( menu ) gives me the damn null. any suggestions?
>
You're missing the main concept that it takes time (for the purpose of this
discussion, assume 3 seconds even though that's unreasonably high in most
real scenarios) to issue your remote procedure call, have the backend server
process the request and send back the response, and for the client (qooxdoo
program) to receive the response and call your listener function which calls
setMenu(). Therefore when you call qxgui.reg.MenuXML.getInstance() it
*begins* that process and returns. Three seconds later, the response
arrives, your listener is called, and therefore the menu property gets set.
So what's happening when you just issue this:
var menu = qxgui.reg.MenuXML.getInstance().getMenu();
the request has been issued before getMenu() is called but the response has
not yet arrived, so the value of the menu property is still null, thus
alert(menu) displays null. You are operating in an asynchronous world now,
not a synchronous one. You must organize your program around events, not
in-line code that you expect to block until a result arrives.
Hope that helps.
Derrell
------------------------------------------------------------------------------
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