在CoffeeScript中鏈接方法的最佳方式是什麼?例如,如果我有這個JavaScript,我怎樣才能在CoffeeScript中編寫它?使用函數參數鏈接方法
var req = $.get('foo.htm')
.success(function(response){
// do something
// ...
})
.error(function(){
// do something
// ...
});
在CoffeeScript中鏈接方法的最佳方式是什麼?例如,如果我有這個JavaScript,我怎樣才能在CoffeeScript中編寫它?使用函數參數鏈接方法
var req = $.get('foo.htm')
.success(function(response){
// do something
// ...
})
.error(function(){
// do something
// ...
});
使用the latest 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
)
另一種方法是將內聯函數「綱要」一風格傑里米阿什克納斯(的CoffeeScript的創建者)通常有利於用於非平凡函數參數:
onSuccess = (response) ->
# doSomething
onError = ->
# doSomething
req = $.get('foo.htm').success(onSuccess).error(onError)
後一種方法更趨於可讀當success
和error
回調是幾行長;如果他們只有1-2個內線,前者是非常棒的。
+1,爲「綱要」提示,絕對保持代碼更具可讀性。 – 2011-08-10 12:21:05
我有時喜歡有更少的括號,而不是鏈接,所以我修改Trevor的最後一個例子:
req = $.get 'foo.htm'
req.success (response) -> # do something
req.error -> # do something
這與鏈接不同,因爲req對象每次都在使用 – 2015-03-13 20:55:43
從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.7的功能在這裏的解釋:https://gist.github.com/aseemk/8637896
這是很棒的信息。 – 2014-03-04 05:39:21
這太棒了。謝謝,這是一種讓操作員首先進入下一行的語言,而不是難以理解的拖尾語法。萬歲! – 2012-10-31 23:11:09
值得注意的是,在Coffeescript 1.7的'foo.html'附近不再需要parens(請參閱下面的答案) – 2014-02-18 16:27:48