Ich verwende Node.js. Ich habe eine Funktion namens locationToAddress erstellt, die aber immer undefiniert zurückgibt. Dies ist der Code vereinfacht:JavaScript: Funktionsrückgabe ist nicht definiert
<FORMATTED_ADDRESS>
<FORMATTED_ADDRESS>
Aber ich sehe:
undefined
<FORMATTED_ADDRESS>
Ich weiß, dass der Fehler bei der Rückkehr ist
var lat = '-34.491093';
var long = '-58.558597';
console.log(locationToAddress(lat, long));
function locationToAddress(lat, long) {
var preUrl = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=';
var apiKey = '<API_KEY>';
var url = preUrl + lat + ',' + long + apiKey;
var addressString = '';
request(url, function (error, response, body) {
try {
var jsonLocationObject = JSON.parse(body);
addressString = JSON.stringify(jsonLocationObject.results[0].formatted_address);
addressString = addressString.replace(/["]/g, '');
console.log(addressString);
return addressString;
} catch (e) {
return 'Could not find address';
}
});
}
in der Konsole sollte dieser Code wie zu sehen ist Der Wert funktioniert einwandfrei, wenn ich die Funktion ohne Protokollierung der Rückgabe aufruft.
Wie Sie durch die Reihenfolge der Ausgabe sehen können, die Funktion * vor * gibt die Antwort empfangen wurde. 'request' ist asynchron. * Rückgabe * ein Wert ist immer synchron. –