# Delay return until XML is loaded

**URL:** <https://forum.kirupa.com/t/delay-return-until-xml-is-loaded/234845>\
**Category:** flash\
**Created:** [August 6, 2007, 4:41pm UTC](https://forum.kirupa.com/t/delay-return-until-xml-is-loaded/234845 "2007-08-06T16:41:43Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Hastalasiesta](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/hastalasiesta/32/1773_2.png) [@Hastalasiesta](https://forum.kirupa.com/u/Hastalasiesta)\
**Post date:** [August 6, 2007, 4:41pm UTC](https://forum.kirupa.com/t/delay-return-until-xml-is-loaded/234845/1 "2007-08-06T16:41:43Z")

</div>

This may very well be a complete newb question but I’m just now migrating to AS3.

I’m creating a class that evaluates an email address to be valid or not. As part of the process I load a XML-File containing all the top level domain suffixes to determine whether or not the email address has a valid domain.

My problem is that I need to make the class wait to give a return statement until the XML has loaded and been evaluated.

To make it a tad clearer:  
The usage:

```auto
addressForChecking = new CheckAddress("me@mydomain.com");
            var isValid:Boolean = addressForChecking.checkIt();
            trace("The result is: " + isValid)

```

The class:

```auto
package no.martinjacobsen.Utils {
    
    import flash.events.*;
    import flash.net.*;
    
    public class CheckAddress {
        
    private var XMLDomains:XML;
    private var XMLLocation:String = "http://www.hastalasiesta.org/stuffs/topleveldomains.xml";
    private var urlLoader:URLLoader;
    private var theAddress:String;
    private var lastDot:Number;    
    private var restOfAddress:Number;
    private var domainName:String;
    private var theWrong:String;

    
    public function CheckAddress(addressToCheck:String){
        theAddress = addressToCheck;
        lastDot = theAddress.lastIndexOf(".");
        restOfAddress = theAddress.length; 
        domainName = theAddress.substr(lastDot,restOfAddress);
            
    }
    
    public function checkIt(): Boolean {
        var isItValid:Boolean;
        
        var urlRequest:URLRequest = new URLRequest(XMLLocation);
            urlLoader = new URLLoader();
            urlLoader.addEventListener(Event.COMPLETE, completeListener);
            urlLoader.addEventListener(IOErrorEvent.IO_ERROR, errorListener);
            urlLoader.load(urlRequest);
            
        /* HERE I NEED TO SOMEHOW DELAY BEFORE EVALUATING THE ADDRESS */
        
        if(suffixChecker(domainName) && atIsNotFirst(theAddress)){
                    return true;
                } else {
                    return false;
            }
    }
    
    
    private function errorListener (e:Event) : Boolean {
        /* ERROR MESSAGE SKIPPED FOR BREVITY */
    }
    
    private function completeListener (e:Event) : Boolean{
        /* CAN I SOMEHOW TRIGGER THE EVALUATION CODE HERE
        * YET STILL MAKE checkIt() RETURN THE VALUE? */
        }
    
    
    private function atIsNotFirst(atAddy:String):Boolean{
        /* CODE SKIPPED FOR BREVITY */
    }
    
    private function suffixChecker (domainName:String):Boolean {
            /* CODE SKIPPED FOR BREVITY */
    }
    
    }
    
}

```

So; I need the XML-file to load before the checkIt() function returns it’s Boolean, but I have no clue how to make checkIt() wait for the eventListener to do it’s stuff before leaping into action (or indeed if it’s possible).

Was that understandable?
