2009-10-01 3 views
0

다른 함수에서 chkAuthentication 함수를 호출 할 때 아래 코드에서
내 서비스 파일 (.php)의 remoteObj.login (로그인 함수)가 해당 함수의 나머지 코드 뒤에 호출됩니다.
즉, 결과 핸들러 함수 loginResult가 호출되기 전에 loginStatus가 함수에서 리턴됩니다. 하지만 내 loginStatus는 loginResult 함수에서 설정해야합니다. 비동기 행동이 범인 인 것 같습니다.
먼저 loginResult 함수를 완료하려면 어떻게해야합니까?
도와주세요. 고맙습니다.Flex RemoteObject 동기 호출

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

chkAuthentication 메서드는 비동기 적이므로 String을 반환하지 않아야합니다. 대신 instance 변수를 만들고 loginResult 메소드에서 String 값을 설정하면됩니다. 그런 다음 바인딩을 사용하거나 이벤트를 보내 UI를 업데이트 할 수 있습니다.

+0

은 u는 어떻게 바인딩을 사용 할 수 정교한하시기 바랍니다 수 있습니다 다음, 데이터 바인딩 된 컨트롤을 사용하여 표시? –

0

성능 문제 외에도 드물지만 FlexResult 함수를 사용하여이 객체에 로그인 상태를 저장해야하는 동 기적으로 작동하는 서비스에 의존하지 않고 이전 답변이 정확합니다. 응용 프로그램의 상태를 저장하는 데 사용중인 객체입니다.

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

관련 문제