簡體   English   中英

等待異步任務完成,然后繼續嗎?

[英]Wait for asynchronous task to complete before continuing?

我正在嘗試通過Google Maps 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函數?

為此使用回調函數,在執行geocoder.geocode();之后執行其他工作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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM