Adobe Actionscript - обработка нескольких сервисных запросов - PullRequest
0 голосов
/ 21 февраля 2011

Кто-нибудь знает о каких-либо хороших ресурсах, которые полностью объясняют, как функции и результаты будут срабатывать в приложении Adobe AIR, где происходит несколько событий одновременно?

В качестве простого теста я создал один сервися просто продолжаю изменять URL-адрес, а затем отправляю send ().Кажется, что независимо от того, сколько вызовов send () я вставил, все они выполняются до того, как функция eventListener 'result' будет вызвана в первый раз.

Так ли это работает?т. е. текущая функция полностью выполняется, а асинхронная очередь возвращает очередь, которая будет обработана после того, как AIR завершит свою работу.

Аналогично, если пользователь что-то делает, пока все это происходит, я предполагаю, что его запростакже идет в конец очереди?

Все это имеет смысл, но мне просто интересно, документировано ли это где-либо.

Рекомендуется ли практическаятаким же образом использовать один и тот же HTTPService, или лучше создать его для каждой параллельной транзакции?То, что это работает, не означает, что это правильно ...

1 Ответ

1 голос
/ 22 февраля 2011

Мне неизвестна какая-либо документация, объясняющая это, но я могу подтвердить, что блоки кода выполняются до выполнения асинхронных вызовов или, по крайней мере, до обработки их результата.Если бы это не работало таким образом, вы, например, не всегда могли бы присоединить респондента к токену вызова службы, потому что результат, возможно, уже был обработан.

var token:AsyncToken = myService.someMethod();
token.addResponder(new Responder(resultHandler, faultHandler));

Разработчики издругие платформы находят это странным, так как ожидают, что назначение ответчика будет слишком запоздалым.

Так что, хотя у меня нет официального объяснения технических деталей внутри Flash Player, я могу заверить, что он работаеттаким образом.

Если пользователь делает что-то во время ожидания вызова, новый запрос действительно будет просто добавлен как новый асинхронный вызов.Обратите внимание, что мы не можем реально говорить об очереди, так как нет гарантии, что ответ на первый вызов поступит раньше, чем ответ на второй вызов.Это зависит от того, сколько времени занимают фактические запросы.

Вы можете прекрасно использовать экземпляр HTTPService.

PS : На основании этого мы смогли построить Операционный API в Spring ActionScript.По сути, это API, который позволяет вам выполнять асинхронные процессы единообразным образом, не беспокоясь о деталях фактического асинхронного процесса.

Следующий код выполняет асинхронный процесс и присоединяет к нему обработчик.Это также то, что поначалу озадачивает многих разработчиков по причинам, аналогичным ситуации asyncToken.

var operation:IOperation = doSomeOperation();
operation.addCompleteListener(aCompleteHandler);
operation.addErrorListener(anErrorHandler);
...