簡體   English   中英

javascript:無法使setTimeout正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM