如何使用Coffeescript的params编写setTimeout

时间:2011-06-23 19:33:22

标签: javascript settimeout coffeescript

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

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

6 个答案:

答案 0 :(得分:208)

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

delay = (ms, func) -> setTimeout func, ms

delay 1000, -> something param

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

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

callback = -> something param
setTimeout callback, 1000

答案 1 :(得分:178)

setTimeout ( ->
  something param
), 1000

圆括号是可选的,但用逗号开始这行似乎很麻烦。

答案 2 :(得分:66)

setTimeout -> 
  something param
, 1000

答案 3 :(得分:46)

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

setTimeout (-> something param), 1000

请注意,这不是一个确切的翻译,因为匿名函数会返回调用something(param)而非undefined的结果,就像在您的代码段中一样。

答案 4 :(得分:12)

我发现这是做同样事情的最佳方法,

setTimeout (-> alert "hi"), 1000

答案 5 :(得分:3)

另一种选择:

setTimeout(
    -> something param
    1000
)