Я думаю, что обратные вызовы являются последним аргументом функции. Это обычно имеет место, например, с API-интерфейсом Node.js. Итак, имея в виду:
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
Конечно, это добавляет издержки дополнительного вызова функции к каждому setTimeout
, который вы делаете; но в современных интерпретаторах JS недостаток производительности незначителен, если вы не делаете это тысячи раз в секунду. (И вообще, что вы делаете, устанавливая тысячи тайм-аутов в секунду?)
Конечно, более простой подход состоит в том, чтобы просто назвать ваш обратный вызов, который в любом случае имеет тенденцию создавать более читаемый код (jashkenas - большой поклонник этой идиомы):
callback = -> something param
setTimeout callback, 1000