在我的应用程序中,我想根据地址更新谷歌地图并放置用户类型。因为我不希望应用程序每次用户输入 1 个字母时都更改地图,所以我搜索了一些东西来降低函数调用的数量。因为超时只会延迟对函数的调用(该函数将被调用,就好像它没有延迟一样),我搜索了替代方案并找到了 jQUery debounce,我尝试像这样实现它:
$('input.locatie-input').on('input', $.debounce(function () {
console.log('changed');
initializeMap();
}, 500));
但我不断收到以下错误:
Uncaught TypeError: undefined is not a function
参考以下行:
$('input.locatie-input').on('input', $.debounce(function () {
我做错了什么,并且在这种情况下要消除抖动?
更新:
Roko C. Buljan 的回答是有效的,去抖插件也一样
去抖插件代码:
_.debounce = function(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};