Answers:
我认为这是将回调作为函数的最后一个参数的有用约定。例如,Node.js API通常就是这种情况。因此请牢记:
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
当然,这给setTimeout
您进行的每个操作都增加了额外的函数调用的开销。但是在当今的JS解释器中,除非您每秒执行数千次,否则性能的缺点是微不足道的。(无论如何,您正在设置每秒数千次超时吗?)
当然,一种更直接的方法是简单地命名您的回调,无论如何它总是会产生更具可读性的代码(jashkenas是这种习惯用法的忠实拥护者):
callback = -> something param
setTimeout callback, 1000
setTimeout ->
something param
, 1000
something param
与处于同一行setTimeout
,则解析方式不同。
这将导致大致等效的翻译(感谢@Joel Mueller):
setTimeout (-> something param), 1000
请注意,这不是确切的翻译,因为匿名函数返回调用的结果,something(param)
而不是如代码片段中的undefined。
setTimeout (() -> something param), 1000
我发现这是最好的方法,
setTimeout (-> alert "hi"), 1000