我尝试使用Underscore.js 1.6.0去抖动函数但是在超时设置后不调用该函数。我希望输出div中只有一个“o”,但没有。将_.debounce(echo, 200)
更改为_.debounce(echo(), 200)
会产生10 o,这不是我想要的。在Mac OS X上的Chrome和Firefox上也有相同的结果。
我做错了什么?我是以错误的方式使用_.debounce吗?
有关工作示例,请参阅http://jsfiddle.net/YmSGL/。
function echo() {
var out = document.getElementById("out");
out.innerHTML = out.innerHTML + "o";
}
for (var i = 0; i < 10; i++) {
var wait = Math.floor(Math.random() * 100);
setTimeout(function() {
console.log("Calling echo @" + _.now());
_.debounce(echo, 200);
}, wait);
}
答案 0 :(得分:1)
谢谢Felix Kling!以下代码有效:
function echo() {
var out = document.getElementById("out");
out.innerHTML = out.innerHTML + "o";
}
var echo2 = _.debounce(echo, 200);
for (var i = 0; i < 10; i++) {
var wait = Math.floor(Math.random() * 100);
setTimeout(function() {
console.log("Calling echo @" + _.now());
echo2();
}, wait);
}
如果你现在请原谅我,我必须把头撞到墙上。