Pourquoi cette fonction ne pas attendre jusqu'à ce qu'il a données de demande XHR?

Quand je l'appelle pour getCurrentConditions il essaie de retourner les données avant de les requestData a été complété et que, par conséquent, ne trouve pas de données.à l'heure actuelle. Je suis bien d'obtenir les données renvoyées par l'URL, j'ai essayé d'ajouter un délai d'attente de la boucle pour attendre le XHR à charger, mais qui vient de se casser le script tous ensemble. Je suis un peu confus pourquoi la deuxième fonction est de ne pas attendre pour cela.requestData(latitude, longitude); pour finir avant de continuer.

this.requestData = function(latitude, longitude) {
    request_url = self.API_ENDPOINT + api_key + '/' + latitude + ',' + longitude + '?units=auto';
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if(xhr.readyState==4 && xhr.status==200) {
            content = xhr.responseText;
            if(content != '' && (content)) {
                return JSON.parse(content);
            } else {
                return false;
            }
        }
    }
    xhr.open('GET', 'proxy.php?url='+request_url, true);
    xhr.send(null);
}
/**
 * Will return the current conditions
 *
 * @param float $latitude
 * @param float $longitude
 * @return \ForecastIOConditions|boolean
 */
this.getCurrentConditions = function(latitude, longitude) {
    data = this.requestData(latitude, longitude);
    if(data !== false) {
        return new ForecastIOConditions(data.currently);
    } else {
        return false;
    }
}



var forecast = new ForecastIO(api_key);
var condition = forecast.getCurrentConditions(latitude, longitude);

OriginalL'auteur Ian Tearle | 2013-04-18