Por favor dígame cómo escribir javascript a continuación en coffeescript.cómo escribir setTimeout con params por Coffeescript
setTimeout(function(){
something(param);
}, 1000);
Por favor dígame cómo escribir javascript a continuación en coffeescript.cómo escribir setTimeout con params por Coffeescript
setTimeout(function(){
something(param);
}, 1000);
Creo que es una convención útil para que las devoluciones de llamada sean el último argumento para una función. Este suele ser el caso con la API Node.js, por ejemplo. Así que con esto en mente:
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
Por supuesto, esto se suma la sobrecarga de una llamada de función extra para cada setTimeout
haces; pero en los intérpretes JS de hoy en día, el inconveniente de rendimiento es insignificante a menos que lo haga miles de veces por segundo. (¿Y qué haces estableciendo miles de tiempos de espera por segundo, de todos modos?)
Por supuesto, un enfoque más directo es simplemente nombrar tu devolución de llamada, que tiende a producir un código más legible de todos modos (jashkenas es un gran admirador de esto modismo):
callback = -> something param
setTimeout callback, 1000
Excelente a menos que necesite devoluciones de llamada anidadas –
¡¡¡Buena respuesta !!!! –
Esto resultará en una traducción más o menos equivalente (gracias @ Joel Mueller):
setTimeout (-> something param), 1000
Tenga en cuenta que esto no es una traducción exacta debido a que la función anónima devuelve el resultado de la llamada something(param)
en lugar de indefinido, como en su fragmento.
Demasiados parens/punto y coma! Esto es CoffeeScript, deshacerse del exceso de parens es la mitad del punto. 'setTimeout (() -> algo param), 1000' –
@Joel Mueller: gracias, he actualizado mi respuesta. – maerics
Nicholas hace un buen punto que los parens vacíos también son opcionales. –
setTimeout (->
something param
), 1000
Los paréntesis son opcionales, pero empezar la línea con una coma me pareció un poco complicado.
setTimeout ->
something param
, 1000
Esto es lo mejor si solo quiere usar una función anónima. –
también para una función con nombre, setTimeout namedFunc, 5000 –
Tenga en cuenta que el espacio en blanco es importante. La llamada debe estar espaciada exactamente como arriba. Si 'something param' está en la misma línea que' setTimeout', se analiza de forma diferente. – henrebotha
otra opción:
setTimeout(
-> something param
1000
)
me parece el mejor método para hacer lo mismo,
setTimeout (-> alert "hi"), 1000
me gusta este guión en línea –
Volví a la pregunta, no es que fuera exactamente lo que estaba buscando, pero las respuestas me llevan en la dirección correcta. – MikeScott8
Esta es una gran pregunta; es uno de los pocos que me están ayudando a descubrir las limitaciones de Coffeescript (como lo es ahora). – thure
¿cómo podemos agregar .call ('hello') a este – Atul