function getData(jsonAddress) {
var data = new Array();
var xhr = $.getJSON(jsonAddress, function(meas) {
for (var i = 0; i < meas.length ; i++) {
var dt = datetimeSplitter(meas[i].valuedate);
data[i] = [Date.UTC(dt[0],dt[1]-1,dt[2],dt[3],dt[4],dt[5]),parseInt(meas[i].value,10)];
};
});
alert(data);
}
Ich möchte die Variable "Daten" der Funktion getData
zur Verfügung stellen, damit ich sie zurückgeben kann (in diesem Fall Warnung). Ich habe verstanden, dass es sich um ein Problem des Umfangs handelt, das durch Schließen gelöst werden kann. Ich habe auch verstanden, was ein Abschluss ist, kenne aber definitiv nicht die Syntax für diesen speziellen Fall.
3 Antworten
Es ist kein Problem des Umfangs, es ist ein Problem der asynchronen Rückrufe.
Sie müssen eine Rückruffunktion an diese Methode übergeben, um die Antwort Ihres getJSON()
-Aufrufs zu erhalten.
$.getJSON(jsonAddress, function(meas)....
ist ein asynchroner Aufruf, d. H. Eine Alarmanweisung wird aufgerufen, bevor die Rückruffunktion (bei der Daten mit Antwortwerten festgelegt werden) aufgerufen wird. Wenn Sie den Alarm innerhalb der Rückruffunktion verschieben, werden Sie feststellen, dass er die richtigen Werte aufweist.
Wenn Sie einen asynchronen Aufruf wie den so oft vorgeschlagenen nicht wirklich verwenden können, können Sie stattdessen auch ($ .ajax) [http://api.jquery.com/jQuery.ajax/] verwenden - $ .getJSON ist nur ein Variation davon - und machen Sie es synchron - Bitte beachten Sie, dass dies nicht die empfohlene Methode ist, da Ihre Anwendung blockiert wird, während der Browser die Daten synchron abruft.