2012-06-04 1 views
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; 
} 

Есть ли способ преодолеть эту проблему, чтобы функция вернулась после завершения события?

ответ

0

ok, вы возвращаете allchilds перед событием результата. Вы удаляете исходный вопрос;), поэтому я не помню, была ли ваша проблема такой. Попробуйте разделить функцию: сначала запрос, затем получите значение allChild.

и да ... лучше написать (и вставить) хороший форматированный код: его легче понять.

+0

есть. Теперь я разделил функцию, но все же я столкнулся с той же проблемой. Функция сначала возвращает allChilds (как null) до добавления элементов. Я отлаживал его, но обнаружил, что событие поймано позже. – shekhar681

+0

Конечно, событие будет обработано позже. Вы не можете этого сделать. Я не знаю, чего вы пытаетесь достичь, но я предлагаю вам ознакомиться с [поставщиками данных] (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

+0

разделение функции только не работает: в обработчике результата вы должны вызвать вторую функцию после установки allchilds. PLS повторяет вопрос –

Смежные вопросы