【问题标题】:Underscore.js debounceUnderscore.js 去抖动
【发布时间】:2014-06-19 16:39:27
【问题描述】:

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

【问题讨论】:

标签: javascript underscore.js


【解决方案1】:

谢谢菲利克斯·克林!以下代码有效:

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

如果你现在可以原谅我,我不得不把头撞到墙上。

【讨论】:

    猜你喜欢
    • 2014-07-29
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多