首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flex事件调度

Flex事件调度
EN

Stack Overflow用户
提问于 2011-01-29 04:23:22
回答 3查看 342关注 0票数 1

我有一些关于我正在编写的程序的特殊结构的问题。

我使用远程对象对Rails方法进行远程调用(使用WebOrb)。问题出现在我取回数据的方式上。

基本上,我有一个名为getConditions的函数,在该函数中,我向远程调用添加了一个事件侦听器,然后进行远程调用。但是,我想要做的是将数据返回到getConditions中,这样我就可以返回它。这是一个问题,因为我只访问事件处理程序中的事件结果数据。下面是描述这个问题的一些基本代码:

代码语言:javascript
复制
public function getConditions():Array
    {

        remoteObject.getConditions.addEventListener("result", onConditionResult);
        remoteObject.getConditions();
       //Here is where I want to get my event.result data back

    }
public function onConditionResult(event:ResultEvent):void
    {
        //Here's the data that I want
        event.result;
    }

我如何才能实现这种数据转变?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-29 05:12:32

flex中的远程调用总是异步的,因此您无法调用getConditions()并在那里等待结果。您必须使用函数闭包来处理结果,要么通过您在其他地方声明的事件处理程序,要么通过在getConditions()中立即创建的动态事件处理程序,如下所示:

代码语言:javascript
复制
remoteObject.getConditions.addEventListener("result", function(event:ResultEvent):void {
  // Run the code that you would want to when process the result.
});
remoteObject.getConditions();

这样做的好处是,您将能够“看到”传递给getConditions()的参数或函数闭包中addEventListener()之前发生的任何逻辑的结果。然而,与声明显式函数相比,这会对性能造成轻微的影响(正是由于这个原因)。

我还应该补充说,这样做需要您自己清理,以确保您不会为每个请求创建一个新的侦听器。

票数 2
EN

Stack Overflow用户

发布于 2011-01-29 05:02:23

你可以这样做

代码语言:javascript
复制
public function getConditions():Array
{

    remoteObject.getConditions.addEventListener("result", onConditionResult);
    remoteObject.getConditions();

}
public function callMyExtraFunction(data:Object):void
{
     //Here is where you want to get your event.result data back
}
public function onConditionResult(event:ResultEvent):void
{
    //Here's the data that you want
    var data:Object = event.result;
    callMyExtraFunction(data);

}
票数 2
EN

Stack Overflow用户

发布于 2011-01-29 05:05:17

您可以像这样使用Call Responder:

代码语言:javascript
复制
<s:CallResponder id="getOperationsResult"/>

然后使用这些行来获取get操作的结果

代码语言:javascript
复制
getOperationResult.token = remoteObject.getOperation();

这将创建调用并返回结果,并将其存储在getOpresult中

如果你不想访问它,你可以调用令牌或getOperationResult.lastResult

希望这能帮助克里斯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4832701

复制
相关文章

相似问题

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