web-dev-qa-db-fra.com

comment écrire setTimeout avec params par Coffeescript

S'il vous plaît dites-moi comment écrire javascript ci-dessous dans coffeescript.

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

Je pense que c'est une convention utile pour les rappels à venir comme dernier argument d'une fonction. C'est généralement le cas de l'API Node.js, par exemple. Donc, dans cet esprit:

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

delay 1000, -> something param

Certes, cela ajoute la surcharge d’un appel de fonction supplémentaire à chaque setTimeout que vous effectuez; mais dans les interpréteurs JS actuels, l'inconvénient en termes de performances est insignifiant si vous ne le faites pas des milliers de fois par seconde. (Et que faites-vous en définissant des milliers de délais d'attente par seconde, de toute façon?)

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

callback = -> something param
setTimeout callback, 1000
211
Trevor Burnham
setTimeout ( ->
  something param
), 1000

Les parenthèses sont facultatives, mais le début de la ligne avec une virgule me semblait compliqué.

180
Nicholas
setTimeout -> 
  something param
, 1000
66
Dirk Smaverson

Cela se traduira par 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 de something(param) au lieu de non défini, comme dans votre extrait de code.

46
maerics

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

setTimeout (-> alert "hi"), 1000
12
Mahesh Kulkarni

une autre option:

setTimeout(
    -> something param
    1000
)
3
Ron