如何用Coffeescript的params编写setTimeout

请告诉我如何在coffeescript中写下面的javascript。

setTimeout(function(){ something(param); }, 1000); 

我认为这是一个有用的惯例callback来作为函数的最后一个参数。 例如,Node.js API通常就是这种情况。 所以记住这一点:

 delay = (ms, func) -> setTimeout func, ms delay 1000, -> something param 

当然,这增加了额外的函数调用的开销,每个setTimeout你做; 但在今天的JS解释器中,性能缺陷是微不足道的,除非你每秒钟处理数千次。 (无论如何,你在做什么每秒设置数千次超时?)

当然,更直接的方法是简单地给你的callback命名,而这往往会产生更多的可读代码(jashkenas是这个成语的忠实粉丝):

 callback = -> something param setTimeout callback, 1000 
 setTimeout ( -> something param ), 1000 

括号是可选的,但用逗号开始行似乎对我来说混乱。

 setTimeout -> something param , 1000 

这将导致大致相当的翻译(谢谢@Joel Mueller):

 setTimeout (-> something param), 1000 

请注意,这不是一个确切的翻译,因为匿名函数返callback用的something(param)而不是未定义的结果,如你的代码片段。

我觉得这是做同样的最好的方法,

 setTimeout (-> alert "hi"), 1000 

另外一个select:

 setTimeout( -> something param 1000 )