链接函数参数的方法

在CoffeeScript中链接方法的最佳方法是什么? 例如,如果我有这个JavaScript,我怎么能写在CoffeeScript?

var req = $.get('foo.htm') .success(function( response ){ // do something // ... }) .error(function(){ // do something // ... }); 

使用最新的CoffeeScript ,以下内容:

 req = $.get 'foo.html' .success (response) -> do_something() .error (response) -> do_something() 

编译为:

 var req; req = $.get('foo.html').success(function(response) { return do_something(); }).error(function(response) { return do_something(); }); 

您可以采取两种方法:CoffeeScript最好的“字面”翻译(在我看来)

 req = $.get('foo.htm') .success((response) -> # do something ) .error( -> # do something ) 

另一种方法是移动内联函数“outline”,Jeremy Ashkenas(CoffeeScript的创build者)通常倾向于非平凡的函数参数:

 onSuccess = (response) -> # doSomething onError = -> # doSomething req = $.get('foo.htm').success(onSuccess).error(onError) 

successerrorcallback是几行时,后一种方法往往更易读; 如果他们只是1-2号,前者是很棒的。

我有时候更喜欢less用括号而不是链接,所以我想修改Trevor的最后一个例子:

 req = $.get 'foo.htm' req.success (response) -> # do something req.error -> # do something 

从Coffeescript 1.7开始,链接已经大大简化了,你不应该在这里提到任何与parens有关的解决方法。 你上面的例子现在可以写成

 req = $.get 'foo.htm' .success ( response ) -> alert "success" .error -> alert "error" 

编译到

 var req; req = $.get('foo.htm').success(function(response) { return alert("success"); }).error(function() { return alert("error"); }); 

你可以在这里看到这个和其他CS 1.7function的解释: https : //gist.github.com/aseemk/8637896