JQuery est “chacun()” fonction synchrone?

envisager ce scénario pour la validation:

function validateForm (validCallback) {
   $('#first-name').add($('#last-name')).add($('#address')).each(function () {
      //validating fields and adding 'invalid' class to invalid fields.
   });
   //doing validation this way for almost 50 fields (loop over 50 fields)
   if ($('#holder .invalid').length == 0) {
       //submitting data here, only when all fields are validated.
   }
}

Maintenant, mon problème est que, la si bloc exécuté avant les boucles sont finis. J'ai attendu le corps de validateForm être exécuté de façon synchrone, mais il semble que jQuery each() fonction est exécutée de manière asynchrone. Suis-je le droit? Pourquoi cela ne fonctionne pas?

  • Quel est le code de validation ressembler? each est synchrone, mais le code à l'intérieur peut-être pas...
  • each elle-même est traitée de manière synchrone. Êtes-vous du démarrage de certains asynchrone en fonctionnement de votre propre à partir de l'intérieur de la boucle?
  • même problème ici .. comment avez-vous le résoudre ?
  • C'est il y a longtemps, je ne me souviens pas. Mais je sais que les réponses m'ont aidé. Donc, je pourrais avoir utilisé async blocs de code dans mon code de validation (comme essayer de valider l'adresse à l'aide d'une requête ajax).
  • hmm ..je l'ai résolu de cette façon.. je faisais "return false" à l'intérieur de chaque fonction qui n'a pas de travail, je suppose.. maintenant je suis le maintien d'un drapeau à l'intérieur de chaque fonction et de retour que le drapeau à la fin de la validation ..
  • Le problème, c'est peut-être que vous les variables déclarées à l'intérieur de la fonction() qui n'étaient pas visibles dans l'instruction if?