我正在尝试使用CoffeeScript Cookbook's debounce function,但我正在努力解决如何传递这个功能。
这是我的代码:
$('#inputID').on 'keyup', =>
query = $('#inputID').val()
func = => console.debug(query)
Debounce.debounceFunction func, 300, false
调用debounce函数,300和“false”传递得很好,但'func'不会执行。
在另一个文件中我有:
root = exports ? this
class Debouncer
debounceFunction: (func, threshold, execAsap) ->
timeout = null
(args...) ->
obj = this
delayed = ->
func.apply(obj, args) unless execAsap
timeout = null
if timeout
clearTimeout(timeout)
else if (execAsap)
func.apply(obj,args)
timeout = setTimeout delayed, threshold || 100
root.Debounce = new Debouncer()
答案 0 :(得分:1)
Cookbook中的例子具有误导性。您希望debouncer在注册事件处理程序时返回该函数。这样,每次发生键盘事件时都会运行超时逻辑。
$('#inputID').on 'keyup', Debounce.debounceFunction(func, 300, false)
答案 1 :(得分:0)
在我看来,使用 debounce 你只是定义了这个功能。你也必须执行它......
func = ->
query = $('#inputID').val()
console.debug(query)
debounceFunc = debounce func, 300, false
$('#inputID').on 'keyup', -> debounceFunc()