Flex是一個(gè)面向服務(wù)的框架, 借用了異步完成標(biāo)記(Asynchronous Completion Token)設(shè)計(jì)模式, 代碼以異步的方式運(yùn)行.
此模式將用戶的操作完成信號(hào)以及數(shù)據(jù)以異步的方式返回給用戶,
這種做法的效率比較高, 用戶不需要同步等待運(yùn)行結(jié)果. 可以在服務(wù)運(yùn)行的同時(shí)進(jìn)行其他操作.
使用ACT模式時(shí), 需要將服務(wù)返回的動(dòng)作和數(shù)據(jù)綁定到一個(gè)異步的處理操作.
ACT必須在服務(wù)調(diào)用前進(jìn)行指定. 服務(wù)調(diào)用時(shí),用戶可以進(jìn)行其他操作, 當(dāng)服務(wù)結(jié)束, 用戶使用ACT接收響應(yīng)并進(jìn)行相應(yīng)的處理.
當(dāng)調(diào)用HTTP Service, RemoteObject, WebService時(shí), Flex會(huì)返回一個(gè)數(shù)據(jù)服務(wù)調(diào)用(Data Service Call)的實(shí)例.
你可以使用 webService.send()返回的調(diào)用對(duì)象(Call Object)來(lái)進(jìn)行結(jié)果處理. 你可以在調(diào)用對(duì)象中添加信息,
并在結(jié)果事件的處理函數(shù)中通過event.call得到調(diào)用對(duì)象.這就是ACT的實(shí)現(xiàn)機(jī)制. 代碼舉例如下:


<mx:HTTPService id="MyService" url="
" result="myHandler(event)" />


<mx:Script>
<

function storeCall()


{
// Create a variable called call to store the instance
// of the service call that is returned.
var call = MyService.send();
// Add a variable to the call object that is returned.
// You can name this variable whatever you want.
call.marker = "option1";


}
// In a result event handler, execute conditional
// logic based on the value of call.marker.
function myHandler(event)


{
var call = event.call

if (call.marker == "option1")
{
//do option 1
}
else


}
]]>
</mx:Script>在調(diào)用服務(wù)(MyService.send())時(shí), 返回了調(diào)用對(duì)象 call
可以給調(diào)用對(duì)象添加信息 call.marker = "option1";
在服務(wù)完成的處理函數(shù)中可以使用 event.call 獲得調(diào)用對(duì)象, 從而獲得信息(call.marker).