2011-01-11 102 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; 
}