2011-01-11 36 views
2

我的任务是为HTML5 WebSocket服务器创建一个AS3客户端。ASyncToken有什么意义?

我最初的想法是使用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 
} 

显然令牌有自己的应答,并且该服务可以保持令牌的消息的字典,但如果我是叫myService.myCall两次,在做出任何回应之前,服务是否知道哪个令牌与响应关联?服务是否会创建一个唯一的标识符将响应与令牌关联起来,还是会在这种情况下失败?

如果它确实在内部存储了自己的唯一标识符,那么它将如何完全跳过令牌并将响应者传递给调用参数?例如。

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

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

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

只看了一下我自己的示例代码,可以看到令牌没有存储在服务中,所以令牌是对调用的引用而不是其他方式。尽管如此,我仍然没有看到它在两个调用相同方法的区别之处。 – adamk 2011-01-11 22:02:49

+0

Docs提到了这个问题:“这个类提供了一个设置异步RPC操作的额外或令牌级数据的地方,它还允许IResponder成为附加在一个单独的调用中,AsyncToken可以在token属性的ResultEvent和FaultEvent中引用。“ – Heikki 2011-01-11 22:36:32

回答

2

两件事情引人注目:

  1. 您可以指定一个以上的应答到的AsyncToken;
  2. 您可以绑定AsyncToken的结果。

根据您正在处理的数据类型,您可能会发现这两个方面很有用......也有可能比这更多。

+0

感谢您的回应,这确实有道理。我猜可以绑定的结果是最有用的部分。时间运行一些测试.. – adamk 2011-01-13 15:20:37

0

对于更复杂的应用程序,AsyncToken可让您在接收数据或处理错误的功能/关闭/方法方面拥有更多的灵活性。

-1
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; 
}