Actionscript 3: Как выполнить несколько запросов асинхронных вызовов веб-сервиса - PullRequest
0 голосов
/ 26 июля 2011

Я использую Flex и Actionscript 3, а также Webservices, rpc и callResponder. Я хочу, например, сказать:

loadData1();  // Loads webservice data 1
loadData2();  // Loads webservice data 2
loadData3();  // Loads webservice data 3

Однако Actionscript 3 работает с асинхронными событиями, поэтому при каждом вызове нужно ждать, пока ResultEvent сработает, когда это будет сделано. Таким образом, я могу захотеть сделать следующий запрос каждый раз, когда происходит событие. Однако я боюсь, что могут возникнуть проблемы с многопоточностью, а некоторые события могут вообще не произойти. Я не думаю, что я делаю хорошую работу по объяснению, поэтому я попытаюсь показать некоторый код:

    private var service:Service1;
    var cp:CallResponder = new CallResponder();

    public function Webservice()
    {
        cp.addEventListener(ResultEvent.RESULT, webcalldone);
        service = new Service1();
    }
    public function doWebserviceCall()
    {
        // Check if already doing call, otherwise do this:
        cp.token = service.WebserviceTest_1("test");    
    }   
    protected function webcalldone(event:ResultEvent):void
    {
        // Get the result
        var result:String = cp.lastResult as String;

        // Check if other calls need to be done, do those
    }

Теперь я мог бы, конечно, сохранить действия в массиве, но кто может сказать, что addToArrayList и проверка доступности других вызовов не портят друг друга или просто пропускают друг друга, тем самым останавливая выполнение? Есть ли что-то вроде летучего Arraylist? Или есть совершенно другое, но лучшее решение этой проблемы?

Ответы [ 2 ]

1 голос
/ 26 июля 2011

Используйте AsyncToken, чтобы отслеживать, какой вызов был возвращен для данных http://flexdiary.blogspot.com/2008/11/more-thoughts-on-remoting.html

0 голосов
/ 27 июля 2011

Когда я хочу сохранить данные в асинхронном поместье, я помещаю их в массив и создаю функцию, которая «выталкивает» элемент, когда я его отправляю.Эта функция будет вызываться при полных и ошибочных событиях.Да, я знаю, что может быть проблема с сервером и потерянными данными, ну да ладно.Это также может быть обработаноСобытия всегда будут запускаться, однако, это может быть не полное событие, которое запускается, но может быть событием ошибки.Когда массив пуст, функция завершена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...