0
我寫了一個遞歸調用的函數。我維護了一個數組,其中的值與事件的偵聽器一起推送。但問題是函數首先返回而沒有數組增量,並且稍後執行偵聽器。在flex中使用事件監聽器的遞歸函數4
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;
}
有沒有什麼辦法可以解決這個問題,讓函數在事件完成後返回?
是的。現在我已經分解了這個功能,但我仍然面臨同樣的問題。該函數首先在添加元素之前返回allChild(爲null)。我調試了它,但發現事件後來被捕獲。 – shekhar681
當然事件將在稍後處理。你不能這樣做。我不知道你想達到什麼,但我建議你閱讀[數據提供商](http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7fb8.html)和[使用HTTPService與xml](http://help.adobe.com/en_US/Flex/4.0/AccessingData/WS2db454920e96a9e51e63e3d11c0bf69084-7fdd.html#WS2db454920e96a9e51e63e3d11c0bf69084-7b7a)。或者如果你會更具體,也許我們將能夠幫助你。 – Art
單獨拆分函數不工作:在結果處理程序中,必須在設置allChilds之後調用第二個函數。請轉發問題 –