0

我需要创建一个执行 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,因为在 main 函数的末尾没有调用 valresult()。我应该怎么做才能让 FKDescription() 返回来自远程对象的字符串?

坦克。

4

2 回答 2

2

那是因为 HTTP 调用是异步的,所以你必须为结果而努力。您要做的是将结果处理程序删除到它自己的函数中,以便它等待结果,然后对其进行处理。现在不可能做你正在尝试完成的事情,即立即返回值。

在此处查看如何进行异步调用

于 2011-04-29T18:13:14.840 回答
1

正如 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);
于 2011-04-29T20:56:03.147 回答