La fonction exécuter l'un après l'autre complète
function1 = function(){
something.on('transitionend', function(){
//now function2 should run
});
}
function2 = function(){
alert('ok');
}
function1();
function2();
J'ai donc entendu parler de jQuery promesses. Je reviendrais un "différé" de l'objet, et dans le gestionnaire d'événement que j'appellerais différé.resolve();
Mais qu'advient-il si j'ai plusieurs gestionnaires d'événements là et je ne veux que la prochaine fonction à exécuter lorsque tous ont été tirés?
+ Je n'aime pas l'idée d'introduire quelque chose étrangère comme le "différé", dans d'autres parties du code.
Est-il un autre moyen de détecter si fonction1 a fini tout son travail?
Passer
Voir jsfiddle.net/rGECn/2
function2
comme un argument de function1
et à l'appeler à l'intérieur de la fonction de rappel pour .on
. Comme dans: function1(function2);
Et puis: function1 = function(callback){ something.on('transitionend', callback); }
Voir jsfiddle.net/rGECn/2
OriginalL'auteur thelolcat | 2014-08-05
Vous devez vous connecter pour publier un commentaire.
Essayer cela,
Ici fuction1 est votre première fonction à appeler, et fuction2 est votre deuxième fonction.
Cela fonctionne réellement!
OriginalL'auteur Jinesh
Soit vous prenez la promesse approche, ou vous prenez le rappel de l'approche.
Avec rappels, vous auriez du passer
function2
en tant que paramètre àfunction1
;... mais alors vous obtenez imbriqués l'enfer si vous avez
function3
dépend defunction2
, etfunction4
personne à charge sur 3.C'est pourquoi vous iriez vers le bas le report de la route;
... qui vous permettra de chaîne successifs des fonctions plutôt que de nidification (à condition qu'elles en sont toutes retournées promesses, bien sûr).
Combinant les gestionnaires d'événements et deferreds est un peu brouillon. Donc, si vous êtes allé en bas de la route de la multiplicité de gestionnaires d'événements, vous finirais par avoir à faire quelque chose de boiteux comme;
La réel combinant de manière plusieurs deferreds est par l'utilisation de
$.lorsque()
, mais malheureusement, ici vous n'avez pas plusieurs deferreds, et en les ajoutant sera aussi bordélique que l'aide de lamaybeFire
approche.OriginalL'auteur Matt
Note,
transitionend
événement peut être déclenché plusieurs fois siall
est situé danscss
transition
la valeur de la propriétéEssayer (ce modèle)
je.e.g.,
html
css
js
jsfiddle http://jsfiddle.net/guest271314/u7B9K/
OriginalL'auteur guest271314