From:http://blog.olivermerk.ca/index.cfm/2008/6/8/AsyncToken-primer
你知道AsyncToken是什么吗?
解答一:首先,询问一个声称精通Flex的人;
解答二:官方文档是这样描述的:"这个类针对异步RPC操作提供了一个用来设置额外的或者令牌级数据的地方。它也允许一个IResponder作为
一个独立调用被附加。这个AsyncToken能够在ResultEvent和FaultEvent中用token属性来引用。"
如果你对Flex中远程异步调用的本质不熟悉,肯定还是有点困惑的。我碰见过大量的对这个便捷类不熟悉的人,因此我试着来让它明朗一点。
无论何时从你的flex/AIR应用中使用多个外部调用中的一个,你都不会知道这些调用是否或者何时返回结果(或者错误),你也不会知道它们返回的
顺序。即使你按照"RO1","RO2","RO3"的顺序调用远程对象,它们返回的顺序还是可能不一样。你可能也希望针对这些结果能有不同的处理。
一种方式就是给每一个调用分配一个异步令牌(AsyncToken )来追踪这些调用。
不要这样来进行远程调用
myRO.myRemoteMethod();
你应该这样
var token:AsyncToken=myRO.myRemoteMethod();
(确保导入了mx.rpc.AsyncToken)
现在就有了一个变量"token",代表这个单独的调用。像这样,你可以分配token自己的result和fault处理函数
token.addResponder(myResponderClass);
这里myResponderClass类实现了IResponder.实现Iresponder简单的意味着定义了如下两个方法签名:
- public function result(data:Object):void
- public function fault(info:Object):void
因此你可以对你的远程调用在调用时设置result和fault处理函数,而不用把硬编码放到你的远程对象,HTTPService或者WebService标签里。这也恰好就是Cairngorm和其他微体系结构的运行方式。
AsyncToken最后一点很酷的特性就是它是动态类。这意味着,当你进行远程调用时可以添加属性到token上,然后result/fault处理函数中读取这些属性。
分享到:
相关推荐
6. 异步通信:了解异步请求的工作原理,如使用AsyncToken进行异步服务调用,并处理响应结果。 7. 数据管理:学习如何使用Flex的本地存储和LCDS的离线支持功能,实现在无网络连接时的应用功能。 8. 动画和特效:...
var token:AsyncToken = amfClient.call("HelloWorld", null); token.addResponder(new Responder(onResult, onFault)); function onResult(result:Object):void { trace("Result: " + result as String); } ...
8. **服务端交互**:说明如何与ArcGIS Server进行通信,获取和更新数据,如使用Task和AsyncToken。 9. **性能优化**:提供提高应用程序性能的策略,包括缓存、分块加载、多线程处理等。 10. **示例代码**:提供...
为了更好地管理多组上传,我们可以使用ActionScript的异步处理能力,如`AsyncToken`和`addResponder()`方法,确保每组文件的上传不会阻塞用户界面。同时,我们还需要监听`result`、`fault`等事件来处理上传的成功、...
使用`AsyncToken`和`DataService`组件可以实现异步数据操作。 总的来说,Flex中的自动搜索功能涉及到事件处理、数据过滤、数据绑定、自定义组件等多个方面。通过合理的代码组织和优化,我们可以创建一个高效、用户...
在第二步中,我们可以使用QueryTask.execute(query:Query, responder:IResponder = null):AsyncToken来实现分页查询。Query对象新增加了一个属性Objectids,用于指定执行查询的objectid的范围,这就使我们可以根据...
这可以通过`NetStatusEvent`和`AsyncToken`对象实现,确保消息的及时更新和显示。 5. **用户界面**:Flex的强项在于提供丰富的UI组件,如`TextInput`(输入框)和`List`(列表视图),用于构建简洁易用的聊天界面。...
Flex支持异步编程模型,如使用`AsyncToken`对象和`callLater()`方法,可以避免UI线程阻塞,确保等待界面的平滑显示。 5. **优化用户体验**: - **延迟显示**:不必要一开始就显示等待界面,只有当后台任务执行...
例如,使用`AsyncToken`对象与`ResultEvent`来监控后台进程。 8. **样式和皮肤**:Flex允许自定义组件的外观,包括状态消息的样式。通过修改主题或创建新皮肤,你可以改变消息的字体、颜色、背景等视觉元素。 9. *...
`HTTPService`类位于`mx.rpc.http`包下,它是`AsyncToken`和`ResultEvent`的子类,继承了Flex的远程调用能力。通过`HTTPService`,开发者可以轻松地向Web服务发起GET或POST请求,并处理返回的数据。在描述中提到的...
在Flex中,可以使用`mx.collections.ListCollectionView`或`mx.rpc.AsyncToken`等类来管理数据源。 5. **自定义和扩展**:这个组件是Adobe官方修改过的版本,说明它可能已经进行了优化,更适应实际应用需求。开发者...