Загрузка из 2-х urlloaders в порядке и поддержание потока в FLEX - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть гибкое приложение, в котором при creationComplete я вызываю метод, в котором мне нужно было загрузить два XML-файла с сервера. Только после этого мне нужно идти дальше ..

В настоящее время я делаю следующее

onCreationComplete = init();    

private function init():void{

    //loading first XML

    urlReq = new URLRequest(PATH_FOR_XML1);
    urlLdr = new URLLoader(urlReq);
    urlLdr.addEventListener(Event.COMPLETE, doEvent);

    //Some other operation  goes here say SOMEGREATWORK    
}

**doEvent method**

private function doEvent(evt:Event):void{

    //Loading the data of XML1 to some variable which i use application wide

    urlReq = new URLRequest(PATH_FOR_XML2);
    urlLdr = new URLLoader(urlReq);
    urlLdr.addEventListener(Event.COMPLETE, loadXML2);
}

private function loadXML2(evt:Event):void{
    //Loading the data of XML2 to the some varibale which i use application Wide
}

На самом деле я делал, как только загрузка одного URL-адреса была завершена, я загружал с него данные и начинал загрузку второго загрузчика URL-адреса тем же методом.

Нопроблема в том, что я не хочу, чтобы блок SOMEGREATWORK выполнялся до того, как 2 XML загружены в переменные приложения

, потому что в блоке SOMEGREATWORK я буду использовать их, и к тому времени, когда это выполняется, иногда переменные не загружаютсядолжным образом.

1 Ответ

0 голосов
/ 08 апреля 2011

Попробуйте это:

    onCreationComplete = init();


private function init():void{

    //loading first XML

    urlReq = new URLRequest(PATH_FOR_XML1);
    urlLdr = new URLLoader(urlReq);
    urlLdr.addEventListener(Event.COMPLETE, doEvent);

}


private function doEvent(evt:Event):void{

    //Loading the data of XML1 to some variable which i use application wide


    urlReq = new URLRequest(PATH_FOR_XML2);
    urlLdr = new URLLoader(urlReq);
    urlLdr.addEventListener(Event.COMPLETE, loadXML2);

}

private function loadXML2(evt:Event):void{
    //Some other operation  goes here say SOMEGREATWORK
}
...