首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何立即得到RemoteObject的结果?

如何立即得到RemoteObject的结果?
EN

Stack Overflow用户
提问于 2011-04-30 01:36:17
回答 2查看 1.1K关注 0票数 0

我需要创建一个函数来执行java方法并返回他的结果。它是静态的,因为很多其他函数都会调用这个函数。所以我这样做了:

代码语言:javascript
复制
        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()返回来自远程对象的字符串呢?

坦克。

EN

回答 2

Stack Overflow用户

发布于 2011-04-30 02:13:15

这是因为HTTP调用是异步的,所以您必须以某种方式处理结果。您想要做的是删除它自己函数的结果处理程序,以便它等待结果,然后对其执行一些操作。这是不可能的,你现在正在尝试完成的事情,就是立即返回值。,is,,is,。,你现在想做的事情,就是立即返回值。

检查here on how to do async calls

票数 2
EN

Stack Overflow用户

发布于 2011-04-30 04:56:03

正如J_A_X所说,所有的http请求都是异步的,我建议这样重构你的代码:

代码语言:javascript
复制
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);
    }
}

在调用者中,而不是:

代码语言:javascript
复制
 ret = FKDescription("something");
 otherFunction(ret);

您可以这样做:

代码语言:javascript
复制
FKDescription("something", otherFunction);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5835354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档