Tutto ciò che dovrà utilizzare o tenere conto del responso di XMLHttpRequest dovrà essere inserito all'interno della funzione. Si chiama uso "asincrono" non per niente (viene eseguito dopo, come hai detto tu; e non hai modo di sapere quando: quando è pronto, punto e basta)... Non hai alternative.