web-dev-qa-db-ja.com

Coffeescriptでparamsを使用してsetTimeoutを記述する方法

以下のjavascriptをcoffeescriptで記述する方法を教えてください。

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

関数の最後の引数としてコールバックが来るのは便利な規則だと思います。これは通常、例えばNode.js APIの場合です。それを念頭に置いて:

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

delay 1000, -> something param

確かに、これはあなたが作るすべてのsetTimeoutに余分な関数呼び出しのオーバーヘッドを追加します。しかし、今日のJSインタープリターでは、1秒あたり数千回実行しない限り、パフォーマンスの低下はわずかです。 (とにかく毎秒何千ものタイムアウトを設定しているのですか?)

もちろん、より簡単なアプローチは、コールバックに単純に名前を付けることです。これは、とにかく読みやすいコードを生成する傾向があります(jashkenasはこのイディオムの大ファンです)。

callback = -> something param
setTimeout callback, 1000
211
Trevor Burnham
setTimeout ( ->
  something param
), 1000

括弧はオプションですが、コンマで行を開始するのは面倒です。

180
Nicholas
setTimeout -> 
  something param
, 1000
66
Dirk Smaverson

これにより、ほぼ同等の翻訳が行われます(@Joel Muellerに感謝)。

setTimeout (-> something param), 1000

匿名関数は、スニペットのように未定義ではなくsomething(param)を呼び出した結果を返すため、これは正確な翻訳ではないことに注意してください。

46
maerics

私はこれを同じことをする最良の方法だと思います、

setTimeout (-> alert "hi"), 1000
12
Mahesh Kulkarni

別のオプション:

setTimeout(
    -> something param
    1000
)
3
Ron