请告诉我如何在coffeescript中编写下面的javascript。
setTimeout(function(){
something(param);
}, 1000);
答案 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
)