以下のjavascriptをcoffeescriptで記述する方法を教えてください。
setTimeout(function(){
something(param);
}, 1000);
関数の最後の引数としてコールバックが来るのは便利な規則だと思います。これは通常、例えばNode.js APIの場合です。それを念頭に置いて:
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
確かに、これはあなたが作るすべてのsetTimeout
に余分な関数呼び出しのオーバーヘッドを追加します。しかし、今日のJSインタープリターでは、1秒あたり数千回実行しない限り、パフォーマンスの低下はわずかです。 (とにかく毎秒何千ものタイムアウトを設定しているのですか?)
もちろん、より簡単なアプローチは、コールバックに単純に名前を付けることです。これは、とにかく読みやすいコードを生成する傾向があります(jashkenasはこのイディオムの大ファンです)。
callback = -> something param
setTimeout callback, 1000
setTimeout ( ->
something param
), 1000
括弧はオプションですが、コンマで行を開始するのは面倒です。
setTimeout ->
something param
, 1000
これにより、ほぼ同等の翻訳が行われます(@Joel Muellerに感謝)。
setTimeout (-> something param), 1000
匿名関数は、スニペットのように未定義ではなくsomething(param)
を呼び出した結果を返すため、これは正確な翻訳ではないことに注意してください。
私はこれを同じことをする最良の方法だと思います、
setTimeout (-> alert "hi"), 1000
別のオプション:
setTimeout(
-> something param
1000
)