Winą oczywiście jest tu asynchroniczność i musisz na ten temat uzupełnić swoją wiedzę, bo bez tego ani rusz.
Rozwiązaniem twojego problemu są callbacki. Nie wiem z czego tam korzystasz, z gołego obiektu xhr, czy może funkcji z jQuery, ale nie ważne co by to było, każda funkcja asynchroniczna przyjmuje, np. w jakimś parametrze, funkcję zwrotną, która zostanie wywołana gdy tamta zakończy swoje działanie.