javascript - cómo escribir setTimeout con parámetros en Coffeescript
Por favor, dime cómo escribir el siguiente JavaScript en CoffeeScript.
setTimeout(function(){
something(param);
}, 1000);
Respuesta #1
Creo que es una convención útil que los callbacks sean el último argumento de una función. Esto suele ser el caso con la API de Node.js, por ejemplo. Así que, teniendo eso en mente:
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
Eso sí, esto añade la sobrecarga de una llamada extra a cada setTimeout que hagas; pero en los intérpretes JS actuales, la desventaja en rendimiento es insignificante a menos que lo hagas miles de veces por segundo. (¿Y qué haces poniendo miles de tiempos muertos por segundo, de todas formas?)
Por supuesto, un enfoque más directo es simplemente nombrar tu callback, lo que tiende a producir un código más legible de todos modos (jashkenas es un gran fanático de este idiom):
callback = -> something param
setTimeout callback, 1000
Respuesta #2
setTimeout ( ->
something param
), 1000
Los paréntesis son opcionales, pero comenzar la línea con una coma me pareció desordenado.
Respuesta #3
setTimeout ->
something param
, 1000
Respuesta #4
Esto resultará en una traducción aproximadamente equivalente (gracias @Joel Mueller):
setTimeout (-> something param), 1000
Tenga en cuenta que esto no es una traducción exacta porque la función anónima devuelve el resultado de llamar a something(param) en lugar de undefined, como en su fragmento.
Respuesta #5
Encuentro este el mejor método para hacer lo mismo,
setTimeout (-> alert "hi"), 1000
