在我的应用程序中,我想根据adres更新谷歌地图,并放置用户类型。 因为我不希望应用程序每次更改地图时用户输入1个字母,我搜索了一些东西来降低ammount off函数调用。因为超时只会延迟对函数的调用(该函数将被调用,就好像它没有延迟一样),我搜索了替代方案并找到了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插件也是这样做的
debounce插件代码:
_.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);
};
};
答案 0 :(得分:4)
请参阅: jsBin demo
var timeo; // Define timeout var.
$('input.locatie-input').on('input', function(){ // As one types
clearTimeout(timeo); // clear a running timeout
timeo = setTimeout(initializeMap, 500); // and set a new one
});
答案 1 :(得分:1)