207 votes

comment écrire setTimeout avec des paramètres par Coffeescript

Veuillez me dire comment écrire le javascript ci-dessous en coffeescript.

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

213voto

Trevor Burnham Points 43199

Je pense que c'est une convention utile pour que les callbacks soient le dernier argument d'une fonction. C'est généralement le cas avec l'API Node.js, par exemple. Donc avec ça en tête :

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

delay 1000, -> something param

Il est vrai que cela ajoute la surcharge d'un appel de fonction supplémentaire à chaque setTimeout Mais dans les interpréteurs JS actuels, l'inconvénient en termes de performances est insignifiant, sauf si vous le faites des milliers de fois par seconde. (Et que faites-vous pour régler des milliers de délais d'attente par seconde, de toute façon).

Bien sûr, une approche plus directe consiste à nommer simplement votre callback, ce qui tend à produire un code plus lisible de toute façon (jashkenas est un grand fan de cet idiome) :

callback = -> something param
setTimeout callback, 1000

182voto

Nicholas Points 1730
setTimeout ( ->
  something param
), 1000

Les parenthèses sont facultatives, mais le fait de commencer la ligne par une virgule me semblait désordonné.

67voto

Dirk Smaverson Points 356
setTimeout -> 
  something param
, 1000

46voto

maerics Points 47743

Cela permettra d'obtenir une traduction à peu près équivalente (merci @Joel Mueller) :

setTimeout (-> something param), 1000

Notez que ce n'est pas une traduction exacte car la fonction anonyme renvoie le résultat de l'appel à something(param) au lieu de indéfini, comme dans votre extrait de texte.

12voto

Mahesh Kulkarni Points 115

Je trouve que c'est la meilleure méthode pour faire de même,

setTimeout (-> alert "hi"), 1000

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X