我正在尝试在coffeescript中实现this SO question中的代码。
这是我所拥有的,但它不起作用。
class SomeClass
initialize: ->
target = view.$('#finder')
typewatch = do ->
timer = 0;
(callback, ms) ->
clearTimeout timer
timer = setTimeout callback, ms
target.keyup =>
typewatch @someMethod(target.val()), 1000
someMethod: (arg) ->
// do something
someMethod
毫无延迟地被召唤。似乎没有调用setTimeout。
答案 0 :(得分:1)
@someMethod()
语法会立即调用该方法。
如果要在变量中“存储”方法调用(粗略地,方法+ this
+参数)并稍后调用它,请使用Function.prototype.bind。例如typewatch @someMethod.bind(@, target.val()), 1000
setTimeout (->callback)
部分不会真正执行回调。