Búsqueda de sitios web

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

Artículos relacionados