Flex RemoteObject同步调用

时间:2009-10-01 06:28:25

标签: flex

在下面的代码中,当我从另一个函数调用chkAuthentication函数时,在该函数中的剩余代码之后调用remoteObj.login(我的服务文件(.php)中的登录函数)。 ,在调用result-handler函数loginResult之前,从函数返回loginStatus。但我的loginStatus应该在loginResult函数中设置。似乎异步行为是罪魁祸首。
为了让loginResult函数首先完成,我该怎么做?
请帮帮我。谢谢。

    private var loginStatus:Boolean;

     public function chkAuthentication(loginVOObj:LoginVO):String{
                remoteObj.login.addEventListener(ResultEvent.RESULT,loginResult);  
        remoteObj.login(loginVOObj);
        if(loginStatus == true){
            return displayName;
        }
        else{
            return 'fail';
        }
     }

     private function loginResult(result:ResultEvent):void
             {
        if(result.result == null){
            loginStatus=false;
        }else{
            loginStatus=true;

        }

     }

2 个答案:

答案 0 :(得分:2)

chkAuthentication方法不应返回String,因为它是异步的。相反,只需创建一个实例变量并在loginResult方法中设置其String值。然后,您可以使用绑定或调度事件来更新UI。

答案 1 :(得分:0)

之前的答案是正确的 - 而不是依赖于同步操作的服务,除了性能问题之外,在flex中是一种罕见的情况,您应该使用loginResult函数将登录状态存储在此对象或对象中您用来存储应用程序的状态。然后,使用数据绑定控件显示它:

<mx:label text={userStatus.loginDisplay} />