В чем смысл ASyncToken? - PullRequest
       34

В чем смысл ASyncToken?

2 голосов
/ 12 января 2011

Мне было поручено создать клиент AS3 для сервера WebSocket HTML5.

Сначала я хочу создать этот сервис, используя некоторые из существующих классов в AS3, а именно пытаться эмулировать RemoteObject,но, посмотрев на него, я не вижу смысла в ASyncToken!

Я понимаю, что токен используется в качестве некоторой формы ссылки между вызовом сервера и его ответом, но я просто не вижугде / как он становится уникальным идентификатором.

Возьмем, к примеру, этот короткий фрагмент кода:

 var token:AsyncToken = myService.myCall(params);
 news.addResponder(new Responder(onResult, onFault));

 function onResult(event:ResultEvent) {
   // do stuff
 }

 function onFault(event:FaultEvent) {
   // do stuff
 }

Очевидно, что у токена есть собственный респондент, и служба может хранить словарь токенов.-Messages, но если бы мне пришлось дважды вызывать myService.myCall, прежде чем кто-либо из них ответит, узнает ли служба, с каким токеном будет связан ответ?Создает ли служба уникальный идентификатор, чтобы связать ответ с токеном, или в этих условиях произойдет сбой?

Если внутренне сохранит свой уникальный идентификатор для вызовов, как это будет лучше, чем пропуск?токен целиком и передать ответчику в параметрах вызова?Например,

 myResponder = new Responder(onResult, onFault);
 myService.myCall(myIResponder, <additional params>);

 function onResult(event:ResultEvent) {
   // do stuff
 }

 function onFault(event:FaultEvent) {
   // do stuff
 }

Ответы [ 3 ]

2 голосов
/ 13 января 2011

Выделяются две вещи:

  1. Вы можете назначить более одного ответчика на AsyncToken;
  2. Вы можете связать результат AsyncToken.

Вы можете найти эти две вещи полезными в зависимости от того, с какими данными вы работаете ... Также может быть большек этому, чем это.

0 голосов
/ 10 февраля 2017
public function mssqlQuery(sql:String,fid:String) : void {
    var http:HTTPService = new HTTPService;
    var parm:Object = new Object;
    parm.fas_sql = sql;
    parm.fas_db = mssql_db; 
    http.url = mssql_url+"?irand="+Math.random();
    http.showBusyCursor = true;
    http.request = sql;
    http.addEventListener(ResultEvent.RESULT, mssqlResult);
    http.addEventListener(FaultEvent.FAULT, mssqlFault);
    http.method = "POST";
    sqlToken = http.send(parm);
    sqlToken.param = fid;
}
0 голосов
/ 13 января 2011

Для более сложных приложений AsyncToken позволяет вам иметь немного больше гибкости в том, что функции / замыкания / методы для получения данных или обработки ошибок.

...