сложная проблема синхронизации с командами FLEX (в cairngorm) - PullRequest
0 голосов
/ 08 января 2010

Моя проблема упрощена: У меня есть dataGrid с dataProvider "документы" Столбец таблицы данных имеет функцию labelFunction, которая получает поле project_id документа и возвращает имя проекта из привязываемой переменной "projects"

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

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

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

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

1 Ответ

0 голосов
/ 08 января 2010

Если я вас правильно понял, вам нужно сериализовать ответы с сервера. Я сделал это с помощью 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;
    }
...