gxh973121

博客园 首页 新随笔 联系 订阅 管理

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);
    }

 

posted on 2010-11-24 15:46  gxh973121  阅读(397)  评论(0编辑  收藏  举报