javascript:在回调函数中获取变量的值

时间:2014-10-13 02:25:16

标签: javascript jquery google-geocoder

我使用谷歌地理编码器,我似乎找不到在回调函数中设置全局变量值的方法

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;
}

我尝试以正常的方式设置全局变量,这是在函数外部声明变量,这个最新的尝试是使用函数来设置变量。我做错了什么?

1 个答案:

答案 0 :(得分:2)

您需要阅读有关异步javascript调用的信息 你还试图在尚未设置时使用全局变量 你的函数不能只返回,它需要使用回调来返回值,并且需要从地理编码回调中调用回调
请注意,您的问题标题是"在回调中"但是你没有从内部进行控制台日志,它目前来自外部。