• flex


    flex 事件异步导致代码顺序不利于阅读

    source:http://hi.baidu.com/chensong_blog/blog/item/56240f16a4ad064321a4e91d.html

    做项目时,用RemoteObject对象发现如果一个页面上调用多个方法,此时如果每个方法的出错处理提示和处理结果不同时,必须要给每个方法写一个回调方法,因此,我们采用代理执行,具体代码如下:

    package com.system {

    import com.reider.log4AS3.Logger;
    import com.reider.log4AS3.LoggerFactory;

    import mx.rpc.AbstractOperation;
    import mx.rpc.AsyncResponder;
    import mx.rpc.AsyncToken;
    import mx.rpc.events.FaultEvent;
    import mx.rpc.events.ResultEvent;
    import mx.rpc.remoting.RemoteObject;

    /**
    * 和后台数据交互的代理
    */
    public class ServiceProxy {
      
       private static var logger:Logger = LoggerFactory.getLogger(ServiceProxy);
      
       /**
       * 创建代理后执行此方法,并返回数据
       * @param serviceName
       * @param methodName
       * @param onResult 回调函数,有两个参数:类型:boolean,标识远程调用结果;类型:Object,远程调用返回数据
       * @param params 参数(多个参数中间用逗号隔开)
       */
       public static function execute(serviceName:String, methodName:String, onResult:Function, ... params:Array):void {
        logger.debug("execute start");
        var service:RemoteObject = new RemoteObject(serviceName);

       service.endpoint = "http://ip:port/contextpath/messagebroker/amf";
        var asyncToken:AsyncToken;
        var operation:AbstractOperation = service.getOperation(methodName);
        if (params && params.length != 0) {
         asyncToken = operation.send.apply(operation, params);
        } else {
         asyncToken = operation.send();
        }
        asyncToken.addResponder(new AsyncResponder(
         function(event:ResultEvent, asyncToken:AsyncToken):void {
          onResult(true,event.result);
         },
         function(event:FaultEvent, asyncToken:AsyncToken):void {
          onResult(false, event.message);
         },
         asyncToken
        ));
        logger.debug("execute end");
       }
    }
    }

    调用示例如下:

    private function goToPage(no:Number):void{
         ServiceProxy.execute("PageService","getPage",function(success:Boolean, data:Object):void {
         if(!success){
          Alert.show("数据库异常");
         }else{

    。。。。。成功调用后的处理
                  }
          },encodeURI(hql),no,this.totalRows);
        }

  • 相关阅读:
    【WPF学习】第四十八章 理解WPF动画
    【WPF学习】第四十七章 WriteableBitmap类
    【WPF学习】第四十六章 效果
    【WPF学习】第四十五章 可视化对象
    【WPF学习】第四十四章 图画
    【WPF学习】第四十三章 路径和几何图形
    【WPF学习】第四十二章 透明
    【WPF学习】第四十一章 变换
    【WPF学习】第四十章 画刷
    【WPF学习】第三十九章 理解形状
  • 原文地址:https://www.cnblogs.com/gxh973121/p/1886663.html
Copyright © 2020-2023  润新知