在flex 4中使用事件侦听器的递归函数

时间:2012-06-04 10:32:27

标签: actionscript-3 flex flex4

我编写了一个递归调用的函数。我维护了一个数组,其中的值是通过事件的监听器推送的。但问题是函数首先返回而没有数组递增,并且稍后执行监听器。

public function getAllChilds(seltem:XML, allChilds:Array): Array 
{ 
     if(//the childs of selected item if need to retrive from server)                               
     var   viewChildrenJobsService : HTTPService = new HTTPService(); 
     viewChildrenJobsService.url = // here is my url ; 

 viewChildrenJobsService .addEventListener(ResultEvent.RESULT, function(event:ResultEvent):void { 
    // now on this result event i got all childs of selected item.
    for each(var childJob :XML in seltem.children())    
    {
         allChilds.push(childJob); 
          if (//the childs of childJob need to retrive from server) 
            allChilds = getAllHierarchicalChilds(childJob, allChilds); 
    }
 }); 

 return allChilds; 
}

有没有办法克服这个问题,以便在事件完成后函数返回?

1 个答案:

答案 0 :(得分:0)

好的,你在结果事件之前返回所有的孩子。你删除原来的问题;),所以我不记得你的问题是否是这个。 尝试拆分函数:首先是请求,然后获取allChild的值。

和是......最好编写(并粘贴)好的格式化代码:它更容易理解。