如何使用Coffeescript的params编写setTimeout

tom*_*ian 206 javascript settimeout coffeescript

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

setTimeout(function(){
    something(param);
}, 1000);
Run Code Online (Sandbox Code Playgroud)

Tre*_*ham 212

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

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

delay 1000, -> something param
Run Code Online (Sandbox Code Playgroud)

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

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

callback = -> something param
setTimeout callback, 1000
Run Code Online (Sandbox Code Playgroud)


小智 181

setTimeout ( ->
  something param
), 1000
Run Code Online (Sandbox Code Playgroud)

括号是可选的,但用逗号开始这行似乎对我来说很麻烦.

  • 不用括号编译给我.我不得不删除它们,用逗号开始行,它就像一个魅力. (4认同)

Dir*_*son 66

setTimeout -> 
  something param
, 1000
Run Code Online (Sandbox Code Playgroud)


mae*_*ics 46

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

setTimeout (-> something param), 1000
Run Code Online (Sandbox Code Playgroud)

请注意,这不是一个精确的转换,因为匿名函数返回调用的结果something(param)而不是undefined,如在您的代码段中.


Mah*_*rni 12

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

setTimeout (-> alert "hi"), 1000
Run Code Online (Sandbox Code Playgroud)