0

私は次のようにしようとしています'これらのターゲットの場所に向かってxマイル運転する場所'非同期関数(うまく機能します)も実行の間に待機します。グーグルマップのプロセスには速度の制限があり、「Over_Query_limit」がマップにプロットする前にプロットできるルートが10個以上あります。

私は利用規約(2500 /日)を知っています、私はそれらを破っていません。

中心点(pt)から目的の宛先(endPoints)の配列とループします。これを実現するための構文は何ですか?私はこのサイトや他のサイトで多くのことを読み、関数を引用符で囲む必要があることを確認できましたが、非同期呼び出しではその方法がわかりません。

あなたは私の貧弱な試みを見ることができます(コメントアウト)

var delay=100;
for (var i = 0; i < endPoints.length; i++) {
    //setTimeout(function() {
        howfar(pt,endPoints[i],i,function(i,status,endPoint) {
            //process results
        });
    //},delay;
}

function howfar(from,to,i,callback) {
    //get the endpoint from the directions service
    callback.call({},i,status,endPoint);
}

いつも見て助けてくれてありがとう

4

2 に答える 2

1

正確な構文は次のようになります。

var delay = 100; // in milliseconds, 100 is a tenth of a second
setTimeout(function() {
    howfar(pt,endPoints[i],i, function(i,status,endPoint) {
        //process results
    });
}, delay);

しかし、簡単なグーグルはこれを明らかにしたでしょう。

于 2013-01-22T22:36:43.897 に答える
1

私があなたの質問を正しく理解した場合、howfar関数が戻るまで待って、固定の遅延を加えてendPointから、配列内の次の関数を処理する必要がありますか?

私は通常、処理するアイテムがなくなるまで自分自身をスケジュールするイテレータ関数を設定します。何かのようなもの:

var delay = 100;
var i = 0;
//define a helper function
var measureNext = function() {

   howfar(pt, endPoints[i], i, function(i,status,endPoint) {
     //process results

     //if there are still unprocessed items in the array, schedule
     //the next after {delay} milliseconds
     if(i++ < endPoints.length) {
       setTimeout(measureNext, delay);
     }
   });

};

//start with the first argument
measureNext();
于 2013-01-22T22:45:50.793 に答える