我到目前为止看到了防抖动功能的每一个示例阻止动作的发生多次在指定的时间跨度,然后执行该操作时,在指定的时间段过后,然后复位定时器一次.例如,$mdUtil.debounce
Angular Material中包含的函数.
我正在寻找的是一个debounce函数,它可以立即执行动作,然后防止后续多个动作一直触发,直到计时器重置为止.这使得用户不必等到去抖动时间已经过去直到他们采取行动同时仍然实现去除动作的目标.
有没有人见过一个或有运气创造一个?
更新了一些更多的思考后,防抖动功能,应立即再火的动作,如果去抖功能被反跳的时间跨度内再次呼吁,应该解雇行动第二次在重置定时器之前第二个电话更改的任何值.
编辑:添加jsbin实现
Lodash的去抖可以做到这两点.您必须指定它是领先还是尾随.
https://lodash.com/docs#debounce
_.debounce(sendMail, 300, { 'leading': true, 'trailing': false })
你也可以在几行jsbin例子中编写你自己的去抖函数:
这将首先点击然后去除后续点击.
function debounce(func, delay) { console.log('debounce called with delay', delay); var timer = 0; return function debouncedFn() { if (Date.now() - timer > delay) { func(); } timer = Date.now(); }; }