S'il vous plaît dites-moi comment écrire javascript ci-dessous dans coffeescript.
setTimeout(function(){
something(param);
}, 1000);
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
setTimeout ( ->
something param
), 1000
Les parenthèses sont facultatives, mais le début de la ligne avec une virgule me semblait compliqué.
setTimeout ->
something param
, 1000
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.
Je trouve que c'est la meilleure méthode pour faire la même chose,
setTimeout (-> alert "hi"), 1000
une autre option:
setTimeout(
-> something param
1000
)