質問

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を2回電話した場合、どちらかが応答する前に、サービスはどのトークンが応答を関連付けるかを知っていますか?このサービスは、応答をトークンに関連付けるための一意の識別子を作成しますか、それともこれらの状況下で失敗するでしょうか?

コール用に独自の識別子を内部的に保存する場合、トークンを完全にスキップして呼び出しパラメーターにレスポンダーを渡すよりも、どのように優れていますか?例えば

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

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

 function onFault(event:FaultEvent) {
   // do stuff
 }
役に立ちましたか?

解決

2つのことが際立っています:

  1. 複数のレスポンダーを非同期に割り当てることができます。
  2. 非同期の結果をバインドできます。

これらの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