2012-08-09 36 views
1

我正在使用新的mapbox.js API,特別是事件回調「panned」。當用戶移動地圖時,回調會被激發大約50-100次,這太多了。只有第一個和最後一個事件(或只有最後一個)才能得到這個最好的方法是什麼?檢測事件回調的開始和結束?

map.addCallback('panned', function(move) { 
    console.log('panned'); 
}); 

回答

3

使用.setTimeout:

var timeout = null; 
map.addCallback('panned', function (move) { 
    timeout && window.clearTimeout(timeout); 
    timeout = window.setTimeout(function() { 
     console.log('panned') 
    }, 100) 
}) 

對於超時時間選擇合適的時間,你必須通過幾個值周圍擺弄找出來。

0

UnderscoreJS有幾個有用的功能。

Debounce可能是最適合於你,根據你的描述:...推遲執行,直到等待後,因爲它被調用最後一次毫秒已過

"Throttle"也有用的:「......只會在每等待幾毫秒的時間內最多一次調用原始函數一次,對速度限制事件發生的速度比您可以保持的速度快。」

HTH

相關問題