0

以下のコードにはスコープの問題があると思いますが、ジオコード コールバック関数によって返された値をポリライン配列に保存しようとしていますが、console.log を実行すると配列が空になります。

var addPolyline = function(map, line) {

        var polyline = [];

        $.each(line, function(index, address){

            geocode(address, function(latlng){
                polyline.push(latlng);
                console.log(polyline);
            });

        });

        console.log(polyline);
    }

コールバック関数から配列に要素を追加する方法を教えてください。ありがとう

編集:ポイントはポリライン配列に追加されていますが、$.each が終了する前に console.log(ポリライン) が実行されています。完了するまで待つ方法を考え出す必要があります。

Edit2: 1 人のレスポンダーは、コールバックを使用すると言いました。次のコードでこれを試しましたが、 $.each が終了する前に callback(polyline) がまだ実行されています。

    var addPolyline = function(map, line) {

        formatPolyline(line, function(polyline){
            console.log(polyline);
        });
    }

    var formatPolyline = function(line, callback) {

        var polyline = [];

        $.each(line, function(index, address){

            geocode(address, function(latlng){
                polyline.push(latlng);
                console.log(polyline);
            });

        });

        callback(polyline);
    }
4

1 に答える 1