comment éviter de rappel chaînes?
J'ai besoin d'un tas de fonctions appelées dans un ordre strict. Il est également très important que la fonction suivante attend jusqu'à ce que le précédent est terminé.
Droit maintenant, je suis en utilisant enchaîné les rappels:
callMe1(function(){
callMe2(function(){
callMe3(function(){
callMeFinal();
});
});
});
Cela fonctionne, mais semble être un peu moche.
Des suggestions pour une approche différente?
- Je vais essayer de vous donner une bonne réponse sur la façon de réorganiser votre code afin d'éviter ces situations, mais que très simple de code de l'échantillon n'a pas vraiment d'aller dans lesquelles ces fonctions sont actuellement enchaîné comme ça...
- Un semblable, question que j'ai demandé l'année dernière
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez jQuery, vous pouvez utiliser
file
pour la chaîne de la fonctions.où
callMeX
doit être de la forme:$(document)
lier à$({})
- les fonctions à l'intérieur de la file d'attente peut utiliserthis
référence que le même objet partagé.Vous pouvez mettre en œuvre une "pile" du système:
Ne sais pas si cela peut vous aider, mais il y a un grand article sur la à l'aide de deferreds en jQuery 1.5. Il peut nettoyer votre chaîne un peu...
Aussi, ma réponse sur Quelqu'un peut-il expliquer jQuery file d'attente pour moi a quelques exemples de l'utilisation d'une file d'attente pour s'assurer séquentielle des appels.
Vous pourriez passer des paramètres pour les fonctions, je ne crois pas que vous pouvez à la rédaction de ce document. Cependant...
Habillage de vos fonctions, arguments intacte, avec une fonction anonyme qui joue avec
.queue
travaille trop.Passage d'Arguments en Jquery.La file d'attente()
Exemple sur JSFiddle: http://jsfiddle.net/rS4y4/