Returning in nested functions

Here is my code:
public class engine extends Sprite{

package{
import flash.display.Sprite;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.*;

public class engine extends Sprite{
    
    public var map:XML;
    
    public function engine(){
        map = loadMap("map.xml");
    }
    // Function for loading map from XML files
    public function loadMap(xmlFileLocation:String){
        var urlRequest = new URLRequest(xmlFileLocation);
        var urlLoader = new URLLoader(urlRequest);
        urlLoader.addEventListener(Event.COMPLETE,loadComplete);
        urlLoader.addEventListener(IOErrorEvent.IO_ERROR,loadError);

        function loadComplete(){
            var loadedMap:XML = new XML(urlLoader.data);
        }
        function loadError(){
            trace("Error loading file.");
        }
        return loadedMap;
    }
}

}

Problem:
With this line, map = loadMap(“map.xml”);, i am hoping to return value from loadMap function to map variable. In here, return loadedMap;, loadedMap is empty or undefined because loading takes longer than returning so it returns nothing. I need to return inside the loadComplete function somehow so that map variable gets loaded data from xml file.

On whole, i need to run parent functions return from the nested function. I am losing my mind with this.