FLEX命令的困难同步问题(在cairngorm中)

时间:2010-01-08 17:14:34

标签: flex actionscript-3 flex3 concurrency cairngorm

我的问题,简化: 我有一个dataGrid与dataProvider“文档” datagrid的一列有一个labelFunction,它获取文档的project_id字段,并从可绑定变量“projects”返回项目名称

现在,我发送事件从服务器下载文件和项目,但是如果文件在项目之前下载,那么标签函数会给出错误(没有“项目”变量)

因此,我必须序列化正在执行的命令:getDocuments命令必须仅在getProjects命令之后执行。

在现实世界中,我有几十个资源被下载,并且这些命令并不总是组合在一起(所以我不能例如从第一个的onSuccess()方法执行第二个命令,因为不是他们必须一起执行..)..

我需要一个简单的解决方案..我需要一个想法..

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要序列化来自服务器的回复。我使用AsyncToken完成了这项工作。

方法:在调用远程功能之前,为其添加“令牌”。例如,一个id。然后,服务器对该特定呼叫的回复将包括该令牌。这样,您可以将多个呼叫分开,并创建远程呼叫链。

实际上很酷:

    service:RemoteObject;
    // ..      
    var call:AsyncToken = service.theMethod.send();
    call.myToken = "serialization id";

    private function onResult(event:ResultEvent):void 
    {
       // Fetch the serialization id and do something with it
       var serId:String = event.token.myToken;
    }