как написать setTimeout с помощью параметров Coffeescript


пожалуйста, скажите мне, как написать javascript ниже в coffeescript.

setTimeout(function(){
    something(param);
}, 1000);
6 201

6 ответов:

Я думаю, что это полезное Соглашение для обратных вызовов, чтобы прийти в качестве последнего аргумента функции. Обычно это происходит с узлом.С. API, например. Итак, имея это в виду:

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

delay 1000, -> something param

согласен, это добавляет накладные расходы на дополнительный вызов функции для каждого setTimeout вы делаете; но в сегодняшних интерпретаторах JS недостаток производительности незначителен, если вы не делаете это тысячи раз в секунду. (И что вы делаете, устанавливая тысячи таймаутов в секунду, так или иначе?)

конечно, более простой подход-просто назвать ваш обратный вызов, который в любом случае имеет тенденцию производить более читаемый код (jashkenas является большим поклонником этой идиомы):

callback = -> something param
setTimeout callback, 1000
setTimeout ( ->
  something param
), 1000

скобки необязательны, но начало строки с запятой показалось мне беспорядочным.

setTimeout -> 
  something param
, 1000

это приведет к примерно эквивалентному переводу (спасибо @Joel Mueller):

setTimeout (-> something param), 1000

обратите внимание, что это не точный перевод, потому что анонимная функция возвращает результат вызова something(param) вместо undefined, как в вашем сниппете.

Я считаю, что это лучший способ сделать то же самое,

setTimeout (-> alert "hi"), 1000

другой вариант:

setTimeout(
    -> something param
    1000
)