2010-01-08 47 views
0

我的問題,簡化: 我有一個dataGrid與dataProvider「文件」 datagrid的列有一個labelFunction獲取文檔的project_id字段,並返回項目名稱,從一個可綁定的變量「項目」FLEX命令難以同步問題(在cairngorm)

現在,我派遣事件從服務器下載文檔和項目,但如果文檔在項目之前下載,則標籤函數會給出錯誤(否「projects」變量)

因此,我必須序列化正在執行的命令:getDocuments命令必須只執行在getProjects命令之後。然而,在現實世界中,我下載了數十個資源,並且這些命令並不總是組合在一起(所以我不能在第一個的onSuccess()方法中執行第二個命令,因爲並不總是必須將它們一起執行..)..

我需要一個簡單的解決方案。我需要一個想法..

回答

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; 
    } 
+0

我要補充一點,我沒有用過凱恩戈姆。它可能會搞砸了,但我上面的方法適用於「普通舊式」Flex,可能也適用於Cairngorm。 –

+0

我不明白它.. 我沒有使用遠程函數..我正在使用HTTPService調用一個http服務器,該服務器返回純XML數據(這是一個用rails寫的REST API) 您的方法是否仍然可以應用? – luca