2010-08-18 24 views
0

我使用Rails的后端与我的应用程序,并得到一个从的AsyncToken它返回的Flex执行的AsyncToken(一个DB-打电话要具体)on Rails的

据我知道的AsyncToken返回结果的事件时完成加载请求中的所有数据,这样可以在执行某个使用数据的函数之前确保所有数据都已加载。

我尝试下面的实现来获得的AsyncToken转换成数组和字符串形式给用户绘制的对象:

var dataSrv:services.databaseservice.DatabaseService = new services.databaseservice.DatabaseService; 
    dataSrv.addEventListener(ResultEvent.RESULT, dbListener); 

    //DBOPERATION returns my AsyncToken 
    var listData:AsyncToken = dataSrv.DBOPERATION; 

    var responder:AsyncResponder = new AsyncResponder(resultHandler, faultHandler); 
    listData.addResponder(responder); 



    public function resultHandler(event:ResultEvent, token:Object=null):void{ 
     var output: Array = (event.result as Array); 
     for (var i:int = 0; i<output.length; i++){ 
     Alert.show(output[i].toString()); 
     } 
     } 

     public function faultHandler(event:FaultEvent, token:Object=null):void{ 
     Alert.show("FAULT: " + event.fault.message); 
     } 

但我不断收到一个“空对象的指针”的错误!

回答

1

确定这里它是如何工作的:

var output:ArrayCollection = (event.result as ArrayCollection); 
for (var i:int = 0; i<output.length; i++) 
{ 
     // where VARIABLE is the name of the transmitted data-variable 
    Alert.show(output[i].VARIABLE); 
} 

希望这可以帮助别人。 Thx帮助人,stackoverflow只是真棒!

0

您可以在下面的行

var output: Array = (event.result as Array); 

然后到Flash调试透视添加断点,在“变量”窗格中,您应该能够访问该事件的属性,看到的内容结果属性。

如果结果属性为null,你可能要仔细检查什么是Rails中返回

+0

感谢队友,没有想到Flex的酷炫调试功能!我能够用调试器解决问题,请参阅下一篇文章。 – masi 2010-08-18 18:29:10