在继续之前等待异步任务完成?

时间:2014-03-22 03:38:04

标签: javascript ajax asynchronous

我正在尝试通过谷歌地图javascript api获取位置坐标,这是异步发生的。

这是我的检索功能:

function getCoords(input_address)
{
    var geocoder = new google.maps.Geocoder();
    var addr = {
        address: input_address
    };
    var callback = function(result, status)
    {
        if (status == "OK") {
            var coords = result[0]['geometry']['location'];
            console.log(coords.toUrlValue());
        }
    };
    geocoder.geocode(addr,callback);
}

我想通过ajax函数提交坐标和表单的其余部分。

但是,测试以下内容:

form.submit(function(event){
    event.preventDefault();
     var addr = $("input[type='text']").val();
     getCoords(addr);
     console.log('should wait');
});

输出:

should wait
coordinates

有没有办法确保getCoords函数在执行下一条指令之前完成?

1 个答案:

答案 0 :(得分:1)

为此目的使用回调函数,在执行geocoder.geocode();之后执行其他工作

function getCoords(input_address){
    ......
    ......
    geocoder.geocode(addr, function (){
          doYourJobNow(); //as suggested by tgun926
     });

}

function doYourJobNow(){
    console.log('should wait');
}

//result would be
//coordinates
//should wait