[英]javascript: Can't get setTimeout to work properly
我在帶有傳單的地圖上有一組對象。 我希望我的地圖在一段時間后平移到每個對象。
var idx = 0;
function getNextPoint(point) {
console.log(idx);
map.panTo(new L.LatLng(point.y,point.x), true, 1, 0.5);
idx++;
if (idx < points.length) {
setTimeout(getNextCenter(points[idx]), 4000);
}
}
setTimeout(getNextPoint(points[idx]), 4000);
因此,我希望此代碼在4s之后執行getNextPoint(),平移到第一個點,然后設置下一個超時,並在4s之后再次執行該方法,以此類推,直到達到idx max。
但這不是它在做什么。 它快速遍歷所有點,僅使一個可見平移。
我究竟做錯了什么?
嘗試將超時功能包裝到另一個功能中:
setTimeout(function() {
getNextPoint(points[idx]);
}, 4000);
將函數傳遞給setTimeout時,請勿使用()進行調用。 只需輸入名稱即可。
function print () {
console.log('hello!')
}
setTimeout(print, 4000);
對於您的情況,您還想將其他參數傳遞給getNextPoint。 在現代瀏覽器中( 查看MDN的兼容性 ),您可以將它們傳遞給setTimeout
setTimeout(getNextPoint, 4000, points[idx])
為了支持所有瀏覽器,您可以將綁定的參數與功能的結合 。
setTimeout(getNextPoint.bind(null, points[idx]), 4000)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.