`
shlei
  • 浏览: 287913 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Flex HttpService重用

    博客分类:
  • FLEX
 
阅读更多
Flex和后台交互数据最重要是通过异步传输的HttpSerivce/WebService组件。而高效率合理的异步传输数据是Flex开发中的核心,以下是HttpService的重用类,WebService类似。

实现类:
package com
{   
    import mx.rpc.events.ResultEvent;   
    import mx.rpc.http.HTTPService;      
    public class BaseHttpService   
    {   
        private var xmlService:HTTPService;   
        private var method:Function;   
  
       public function BaseHttpService()   
       {   
      }   
  
       public function getResult(xmlUrl:String, method:Function, postValue:Object=null):void   
       {   
           this.method=method;   
          xmlService=new HTTPService();   
           xmlService.method="post";   
          xmlService.useProxy=false;   
          xmlService.resultFormat=HTTPService.RESULT_FORMAT_XML;   
           xmlService.addEventListener("result", httpResult);   
           xmlService.url=xmlUrl;   
           xmlService.send(postValue);   
       }   
  
       private function httpResult(event:ResultEvent):void   
       {   
           solveResult(event.result);   
  
       }   
  
       protected function solveResult(value:Object):void   
       {   
           method.call(this, value);   
       }   
  
   }

以上代码还有一个弊端,就是连续请求两次,由于HttpService异步传输的特性,会发生两种异常情况,如:
条件:A请求函数在B请求函数前一句执行。
结果:
1.A回调数据还没返回,B回调函数已覆盖A回调函数处理稍后返回的A回调数据;
2.若A回调返回数据量过大,也就是响应时间过长,B回调数据会先于A回调数据返回,造成A回调函数处理B回调数据的情况。

这种问题的解决方案也不是很难,用Object的key/value把回调函数装入,在回调中在用key取出value操作数据,难点是如何区分回调数据,event.result应该也有id标识,用这个应该可以。

若第二次请求依赖于第一次请求,那就只能等第一次请求完成,再执行第二次请求了。
分享到:
评论

相关推荐

    Pro Flex on Spring

    他们详细介绍了Flex与Spring之间的通信机制,如HTTPService、AMF(Action Message Format)和BlazeDS等中间件的使用,这些技术允许数据在Flex客户端和Spring服务器之间高效地传输。 首先,对于Flex部分,读者将学习...

    flex完全自学手册-电子教程

    学习如何使用HTTPService、WebService或AMF(Action Message Format)进行远程调用,以及如何处理返回的数据,是Flex开发的重要环节。 8. **图形和动画**:Flex支持矢量图形和动画,可以通过DisplayObject容器和...

    Flex唯一中文教程【PDF】

    4. **Flex组件模型**:Flex组件是可重用的UI元素,如Button、TextArea、Canvas等。这些组件基于Flex组件模型,允许自定义样式、行为和功能。开发者可以通过继承和扩展已有组件来创建自己的定制组件。 5. **数据绑定...

    flex学习例子,本人学习过程中做的例子

    8. 模块化和重用:Flex支持组件和模块的概念,这有助于代码的组织和重用。在FlickrRIA中,可能会看到如何创建可复用的组件,比如一个用于显示图片的自定义组件。 9. 状态管理:Flex提供了状态管理功能,使得UI可以...

    my flex example2.0

    同时,Flex应用的可扩展性和模块化设计也是其亮点,通过组件化开发,可以将复杂的应用拆解为独立、可复用的部分,提高代码的维护性和重用性。 总的来说,“my flex example2.0”是初涉Flex开发的作者一次成功的尝试...

    Flex 与asp.net 交互

    在Flex4中,我们可以使用HTTPService或WebService组件来调用Asp.net发布的WebService接口。 具体步骤如下: 1. **创建WebService**:在Asp.net环境中,开发者需要创建一个WebService项目,编写.asmx文件,定义Web...

    flex源码大合集1

    7. **模块化开发**:Flex支持模块化,可以将大型应用分解为小的可重用模块。源码可能会展示如何创建和加载模块,以优化应用性能和组织结构。 8. **国际化和本地化**:Flex提供了强大的国际化支持。通过源码,你可以...

    《Flex3权威指南》涉及源代码

    4. **组件库**:Flex包含了一系列预定义的可重用UI组件,如按钮、文本输入框、列表视图等,这些组件可以方便地拖放到设计视图中,并通过MXML或ActionScript进行配置和定制。 5. **数据绑定**:Flex支持双向数据绑定...

    flex快速入门“flex3_quickstart”

    - **使用HTTPService加载外部数据**:通过网络请求获取远程数据,增强应用的动态性和实时性。 ### 结论 Flex3提供了强大且灵活的工具集,使得开发者能够快速构建高性能的RIA。从简单的用户界面到复杂的数据处理,...

    Flex之模块化

    在Flex开发中,模块化是一种重要的设计原则,它有助于提高代码的可维护性、可扩展性和重用性。模块化允许我们将一个大型的应用程序分解为多个独立的、可管理的部分,每个部分称为一个模块。这样做不仅简化了开发过程...

    flex3+java 的一个留言本的例子

    具体实现上,Flex3的客户端通过HTTPService或WebService组件向Java服务器发起请求。这些组件允许Flex与Java之间进行异步通信,使用SOAP或RESTful协议传递数据。在接收到服务器的响应后,Flex会更新界面,显示新的...

    Spring MVC+BlazeDS+Flex框架实践

    4. 模块化设计:将Spring MVC和Flex应用拆分为可重用的模块,便于维护和扩展。 5. 性能监控:定期评估应用性能,及时优化瓶颈。 总结,Spring MVC、BlazeDS和Flex的结合,为开发人员提供了一套强大的工具,用于构建...

    幻想-Flex3基礎視頻教程第二部_教程源碼(a)

    SDK中的Flex Framework包含了一系列可重用的UI组件,如按钮、列表、面板等,这些组件使得开发者能够快速构建用户界面。ActionScript3.0是Flex的主要编程语言,它是基于ECMAScript的一个面向对象的脚本语言,具有更...

    Flex+4.0+RIA开发宝典-代码

    7. **模块化开发**:如何使用Flex模块(Module)来组织大型项目,实现代码重用和独立加载。 通过这些代码示例,开发者可以深入理解Flex 4.0的架构和特性,从而提升自己的开发技能。在实际项目中,可以借鉴这些代码...

    arcgis server flex 中的依赖注入

    在传统的编程模式下,一个类可能会直接创建它所依赖的对象的实例,这种方式会导致类间耦合度较高,不利于代码的重用和测试。依赖注入通过由外部容器或框架负责创建依赖对象,并将这些对象传递给需要它们的类,从而...

    flash builder实例(2)

    在Flex中,我们可以使用AMF(Action Message Format)或HTTPService组件来发送和接收数据。AMF提供了高效的数据传输,而HTTPService则支持RESTful API调用。通过这个解决方案,你可以学习到如何配置服务代理,处理...

Global site tag (gtag.js) - Google Analytics