2010-01-08 1 views
0

Моей проблемой, упрощена: У меня есть DataGrid с микросхемой DataProvider «документами» колонна из DataGrid имеет labelFunction, который получает PROJECT_ID поля документа и возвращает название проекта, от привязываемой переменной «проекты»трудная проблема синхронизации с FLEX командами (в Cairngorm)

Теперь я отправляю события для загрузки с сервера документов и проектов, но если документы загружаются перед проектами, то функция метки дает ошибку (нет переменная «проекты»)

Поэтому я должен выполнить сериализацию выполняемых команд: команда getDocuments должна выполнять только после команды getProjects.

В реальном мире, однако, я загружаю десятки ресурсов, и эти команды не всегда группируются вместе (поэтому я не могу, например, выполнить вторую команду из метода onSuccess() первого, потому что не всегда они должны быть выполнены вместе ..) ..

Мне нужно простое решение .. Мне нужна идея ..

ответ

0

Если я вас правильно понял, вы должны сериализовать ответы от сервера. Я сделал это, используя AsyncToken.

Подход: перед тем, как позвонить функции дистанционного управления, добавьте к нему «токен». Например, идентификатор. Тогда ответ с сервера на этот конкретный вызов будет включать этот токен. Таким образом, вы можете разделить несколько вызовов и создать цепочки удаленных вызовов.

Это довольно круто на самом деле:

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

Я хотел бы добавить, что я не использовал Cairngorm. Это может испортить вещи, но мой подход выше работает с «обычным старым» Flex и, вероятно, в Cairngorm. –

+0

Я не понимаю. Я не использую удаленные функции. Я использую вызовы HTTPService для HTTP-сервера, который возвращает простые XML-данные (это REST api, написанный в рельсах). Может ли ваш метод по-прежнему применяться ? – luca