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

Wait until 'for loop' or 'push' is complete then run function - Javascript

您好,我正在使用以下代码。我需要一些方法让脚本等到 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();
 }

我明白你想做什么了。

在不使用 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();
                }
            } 
        }); 
    }
}