0

我試圖做出以下的「我將在哪裏獲得x英里駕駛這些目標位置的異步功能(這很好用)也在執行之間等待。谷歌地圖進程對速度有限制,而我在「Over_Query_limit」開始繪製地圖之前可以繪製10條路線。語法將setTimeout添加到回調函數

我知道服務條款(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); 
} 

爲始終感謝您尋找和幫助

回答

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(); 
+0

非常感謝你!你明確地理解,這是一個夢想。我會投票,但我是一個新手。 –

+0

@tonygoodwin你非常歡迎。不要忘記將答案標記爲已接受,因此它不會永遠留在未答覆的列表中。 – jevakallio

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); 

快速谷歌本來可能會改變這一點。

+0

謝謝你,證實了我的報價我想這個問題是這樣做的時候,那個方法我沒有體驗到OVER_QUERY_LIMIT響應的任何減少,但我很欣賞你回答。 –