我的任务是为HTML5 WebSocket服务器创建AS3客户端。

我最初的想法是使用AS3中的某些现有类创建此服务,即试图模拟远程对象,但是研究了它,我真的看不到异步的意义!

我了解令牌用作服务器调用及其响应之间的某种形式的参考,但是我只是看不到它在哪里/如何成为唯一标识符。

以这一简短的代码为例:

 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
 }
有帮助吗?

解决方案

两件事脱颖而出:

  1. 您可以将多个响应者分配给异步;
  2. 您可以约束异步语的结果。

您可能会发现这两件事有用,具体取决于您使用的数据类型……还有更多的内容。

其他提示

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

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;
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top