Underscore.js去抖

时间:2014-06-19 16:39:28

标签: javascript underscore.js

我尝试使用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);
}

1 个答案:

答案 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);
}

如果你现在请原谅我,我必须把头撞到墙上。