You can pass the parameter to the setTimeout callback function as: setTimeout(function, milliseconds, param1, param2, ...) eg. Yeah!
Developers generally pass only two parameters to setTimeout method — the callback function and the timeout period.
The setTimeout() function accepts two arguments. The first argument is a function and the second argument is time in milliseconds.
I think it's a useful convention for callbacks to come as the last argument to a function. This is usually the case with the Node.js API, for instance. So with that in mind:
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
Granted, this adds the overhead of an extra function call to every setTimeout
you make; but in today's JS interpreters, the performance drawback is insignificant unless you're doing it thousands of times per second. (And what are you doing setting thousands of timeouts per second, anyway?)
Of course, a more straightforward approach is to simply name your callback, which tends to produce more readable code anyway (jashkenas is a big fan of this idiom):
callback = -> something param
setTimeout callback, 1000
setTimeout ( ->
something param
), 1000
The parentheses are optional, but starting the line with a comma seemed messy to me.
setTimeout ->
something param
, 1000
This will result in a roughly equivalent translation (thanks @Joel Mueller):
setTimeout (-> something param), 1000
Note that this isn't an exact translation because the anonymous function returns the result of calling something(param)
instead of undefined, as in your snippet.
I find this the best method to do the same,
setTimeout (-> alert "hi"), 1000
another option:
setTimeout(
-> something param
1000
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With