J'essaie d'obtenir des exemples sous ma ceinture de la façon dont vous feriez quelque chose de différent dans CoffeeScript à JavaScript. Dans cet exemple de faire la queue fonctions Je suis confus comment vous feriez gérer cela dans CoffeeScriptCoffeescript, comment j'écrirais cet exemple de fonctions en file d'attente, en particulier la boucle?
wrapFunction = (fn, context, params) ->
return ->
fn.apply(context, params)
sayStuff = (str) ->
alert(str)
fun1 = wrapFunction(sayStuff, this, ['Hello Fun1'])
fun2 = wrapFunction(sayStuff, this, ['Hello Fun2'])
funqueue = []
funqueue.push(fun1)
funqueue.push(fun2)
while (funqueue.length > 0) {
(funqueue.shift())();
}
Surtout comment pourrais-je réécrire cela en CoffeeScript?
while (Array.length > 0) {
(Array.shift())();
Donc, je dois juste écrire une fonction completeCallback – Handloomweaver
Edited. 'next' se passe comme argument dans chaque fonction mise en file d'attente Chaque fonction mise en file d'attente devrait s'assurer d'appeler l'argument passé (ici, le nom du paramètre formel dans 'f1' était' completeCallback') afin de provoquer l'invocation de la prochaine fonction en file d'attente – yfeldblum
Ceci est nécessaire car 'f1' peut mettre en place un appel AJAX et revenir immédiatement.Pendant ce temps, il passe dans l'appel AJAX une fonction de gestionnaire de '' succès '' que le navigateur appellera à un point ultérieur. e est maintenu jusqu'à ce que la fonction de gestionnaire de succès soit invoquée et se termine également, pas seulement jusqu'à ce que 'f1' soit retourné (ceci est par votre description du problème). – yfeldblum