Im помощью Google геокодер, и я не могу показаться, чтобы найти способ, чтобы установить значение глобальной переменной внутри функции обратного вызоваJavaScript: получение значения переменных внутри функции обратного вызова
var status_temp;
var lat_temp;
var lng_temp;
var error_temp;
function set_status(status_input){
status_temp=status_input;
}
function set_lat(lat_input){
lat_temp=lat_input;
}
function set_lng(lng_input){
lng_temp=lng_input;
}
function set_error(error_input){
error_temp=error_input;
}
function geocode_address(address_input){
var status_string;
var error_message;
var lat;
var lng;
geocoder.geocode({ 'address': address_input}, function(results, status){
if (status == google.maps.GeocoderStatus.OK) {
set_status('found');
set_lat(results[0].geometry.location.lat());
set_lng(results[0].geometry.location.lng());
} else {
console.log("Geocode was not successful for the following reason: " + status);
set_status('notfound');
set_status(status);
}
});
console.log(status_temp);
if(status_temp==='found'){
var data = ({
status_string:status_temp,
lat:lat_temp,
lng:lng_temp,
});
}else{
var data = ({
status_string:status_temp,
error_string:error_temp,
});
}
return data;
}
Я пытался делать нормальный способ установить глобальные переменные, объявляющие переменную вне функции, эта последняя попытка ive использует функции для установки переменных. Что я делаю не так?
Я бы посоветовал вам прочитать это, чтобы узнать, как обращаться с возвращаемыми значениями из асинхронных вызовов. Это сообщение об аякс-звонках, но это то же самое, что и у вас здесь: http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call – jfriend00
все, что вы нужно сделать, чтобы перевести консольный вызов в обратный вызов. бам, сделано. – dandavis
@ dandavis - очевидно, здесь больше объектива, чем просто 'console.log()'. OP должен научиться обрабатывать результаты async либо в обратном вызове, либо путем вызова другой функции из обратного вызова и передачи данных на нее. – jfriend00