【问题标题】:What is the point of the ASyncToken?ASyncToken 的意义何在?
【发布时间】:2011-01-11 21:57:41
【问题描述】:

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

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

【问题讨论】:

  • 刚刚查看了我自己的示例代码,可以看到令牌根本没有存储在服务中,因此令牌是对调用的引用,而不是相反。不过,我仍然看不出它在哪里区分对同一方法的两次调用..
  • 文档提到这一点:“这个类提供了一个为异步 RPC 操作设置附加或令牌级数据的地方。它还允许为单个调用附加一个 IResponder。AsyncToken 可以在来自令牌属性的 ResultEvent 和 FaultEvent。"

标签: apache-flex actionscript-3 remoteobject asynctoken


【解决方案1】:

有两点很突出:

  1. 您可以为一个 AsyncToken 分配多个响应者;
  2. 您可以绑定AsyncToken的结果。

根据您使用的数据类型,您可能会发现这两件事很有用......而且可能还有更多。

【讨论】:

  • 感谢您的回复,这确实有道理。我想可绑定的结果是最有用的部分。是时候进行一些测试了..
【解决方案2】:

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

【讨论】:

    【解决方案3】:
    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;
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 2020-11-10
    • 2023-03-29
    • 2012-12-09
    • 2016-04-14
    相关资源
    最近更新 更多