2

私のプロジェクトは、速度制限のあるGoogleMapAPIを呼び出しています。したがって、forループの速度を落とす必要があります。

私は次のforループJSコードを持っています:

// Iterate Data and create markers
for (var i in Data) {
    address = Data[i].address;
    tag = Data[i].tag
    placeAddressOnMap(address, tag);
    i = i + 1 ;
}

既存のforループの速度を落とすにはどうすればよいですか?


動作しない次のJSコードを試しました。

// Iterate Data and create markers
for (var i in Data) {
    address = Data[i].address;
    tag = Data[i].tag
    placeAddressOnMap(address, tag);
    i = i + 1 ;
    setTimeout(function () { i = i }, 2000); // failing delay using setTimeout(function () { }, 2000);
}
4

1 に答える 1

5

間隔を設定したいと思います。完全なコードはありませんが、次の行の中に何かがあります。

var timesRun = -1;
var interval = setInterval(function(){
    timesRun += 1;
    if(timesRun == Data.length){
        clearInterval(interval);
    }
    address = Data[i].address;
    tag = Data[i].tag
    placeAddressOnMap(address, tag);
}, 2000); 

重要な小さなデモ: デモ

コードが機能しない理由は、forループが継続しているためです。setTimeoutは非同期であるため。forループの反復に1ミリ秒かかるとしましょう(単なる例)。setTimeoutのコードは、0、2000、4000などではなく、0、2001、2002、2003、2004ミリ秒などで起動されます。

于 2013-03-25T16:10:21.433 に答える