如何立即获得RemoteObject的结果?

| 我需要制作一个执行java方法并返回其结果的函数。这是静态的,因为许多其他函数将调用此函数。所以我这样做:
        public static function FKDescription(dest:String):String{
        var jRemote:RemoteObject = new RemoteObject();
        var s:String;
        jRemote.destination = dest;
        jRemote.getValues.addEventListener(ResultEvent.RESULT,valresult);
        jRemote.getValues();

        function valresult(event:ResultEvent):void{
            s = event.result as String;
        }

        return s;
    }
但是该函数返回null,因为在主函数的末尾没有调用valresult()。我应该怎么做才能使FKDescription()返回来自remoteobject的字符串? 战车     
已邀请:
那是因为HTTP调用是异步的,所以您必须设法获得结果。您想要做的是将结果处理程序移至它自己的函数中,以便它等待结果,然后对其进行处理。无法立即执行您要完成的工作,这将立即返回值。 在此处查看如何进行异步调用。     
正如J_A_X所说,所有的HTTP请求都是异步的,我建议以这种方式重构代码:
public static function FKDescription(dest:String, callback:Function):String{
    var jRemote:RemoteObject = new RemoteObject();
    var s:String;
    jRemote.destination = dest;
    jRemote.getValues.addEventListener(ResultEvent.RESULT,valresult);
    jRemote.getValues();

    function valresult(event:ResultEvent):void{
        callback(event.result as String);
    }
}
并在调用方中,而不是:
 ret = FKDescription(\"something\");
 otherFunction(ret);
你可以这样做:
FKDescription(\"something\", otherFunction);
    

要回复问题请先登录注册