等到'for loop'或'push'完成然后运行函数 - Javascript

时间:2017-02-22 23:35:16

标签: javascript loops for-loop push

您好我正在使用以下代码。我需要一些方法让脚本等到clickButton()完​​成后再运行initialize()。或者可能要等到推送完成?任何帮助,将不胜感激。感谢

 $("#getButtonValue").click(clickButton);
 function clickButton() {
    for( i = 1; i < counter; i++){
        var geocoder = new google.maps.Geocoder();
        var address = $('#textbox' + i).val()
        geocoder.geocode( { 'address': address}, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                        latCoords.push(results[0].geometry.location.lat());
                        longCoords.push(results[0].geometry.location.lng());
            } 
        }); 
    }
    initialize();
 }

1 个答案:

答案 0 :(得分:0)

我看到你正在尝试做什么。

不使用promise,一个简单的解决方法是创建一个计数器,以查看是否所有geocoder.geocode()调用都已完成。

$("#getButtonValue").click(clickButton);
function clickButton() {
    // A counter variable
    int completeCount = 0; 
    for( i = 1; i < counter; i++){
        var geocoder = new google.maps.Geocoder();
        var address = $('#textbox' + i).val()
        geocoder.geocode( { 'address': address}, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                latCoords.push(results[0].geometry.location.lat());
                longCoords.push(results[0].geometry.location.lng());

                // Increment completeCount
                completeCount++; 

                // If all geocoder.geocode() calls received an "OK", initialize()
                if (completeCount == counter) {
                    initialize();
                }
            } 
        }); 
    }
}