La meilleure façon de structurer Javascript Si les déclarations d'être synchrone dans une fonction
Je vous pose cette question pour que je puisse apprendre les "meilleures pratiques" de faire quelque chose en javascript. Dire que j'ai ce code là:
var someFunc = function () {
if (something) {
//do something
}
if (somethingElse) {
//do somethingElse
}
};
La question est de savoir quelle serait la meilleure façon de s'assurer que le "quelque chose" est toujours couru AVANT le "somethingElse'. Javascript est asynchrone, je comprends que j'aurais besoin d'une sorte de système de rappel pour s'en assurer. Cependant, est-il un moyen plus facile de refactoriser? Que faire si il y a de nombreux si les déclarations? Quelles sont les meilleures bibliothèques de faire quelque chose comme ça proprement? Merci à l'avance.
javascript est asynchrone c'est faux. Seules certaines méthodes (telles que setTimout, setInterval, XMLHTTPRequets, requestframe, etc) sont asynchrones. Standard code javascript est synchrone.
Seulement des opérations spécifiques sont en javascript asynchrone et nous ne pouvons que vous aider à une séquence spécifique d'opération asynchrone si vous nous montrer le code pour cette opération spécifique. Il n'y a pas de réponse générique sans voir la façon dont le fonctionnement asynchrone fonctionne. Les rappels sont probablement impliqués, mais des précisions sont nécessaires afin d'aider.
Je suis assez sûr que JavaScript n'est pas asynchrone de la même manière que vous pourriez penser de threads. Je pense que le plus asynchronous JavaScript peut jamais obtenir est lorsque vous chargez plusieurs fichiers source en mode asynchrone dans un fichier HTML, ou à exécuter des fonctions spécifiques telles que
Je vais voter pour fermer cette question hors-sujet, car il est basé sur une fausse prémisse. Être plus précis sur
Seulement des opérations spécifiques sont en javascript asynchrone et nous ne pouvons que vous aider à une séquence spécifique d'opération asynchrone si vous nous montrer le code pour cette opération spécifique. Il n'y a pas de réponse générique sans voir la façon dont le fonctionnement asynchrone fonctionne. Les rappels sont probablement impliqués, mais des précisions sont nécessaires afin d'aider.
Je suis assez sûr que JavaScript n'est pas asynchrone de la même manière que vous pourriez penser de threads. Je pense que le plus asynchronous JavaScript peut jamais obtenir est lorsque vous chargez plusieurs fichiers source en mode asynchrone dans un fichier HTML, ou à exécuter des fonctions spécifiques telles que
requestAnimationFrame
. De sorte que ceux if
déclarations que vous mentionnez ci-dessus doivent être exécutées l'une après l'autre. Pas besoin de rappels.Je vais voter pour fermer cette question hors-sujet, car il est basé sur une fausse prémisse. Être plus précis sur
something
et do something
et comment ils sont asynchrones pour obtenir de l'aide avec cela.OriginalL'auteur bcan001 | 2015-08-08
Vous devez vous connecter pour publier un commentaire.
Pas toutes les lignes de code s'exécute de façon asynchrone en Javascript. Cela dépend de votre code. Par exemple:
Toujours écrire la sortie suivante:
Toutefois, si au lieu d'imprimer les valeurs que vous appelez une fonction qui sera exécutée plus tard (par exemple, une requête Ajax ou un setTimeout rappel), il n'y a aucune garantie que votre code est exécuté dans l'ordre exact. Ce comportement dépend de la fonction que vous appelez. Par exemple, le JQuery
$.get()
fonction est asynchrone (ce qui signifie qu'il va appeler votre fonction à une date ultérieure qui n'est pas sous votre contrôle) comme ceci:Le résultat peut être le contenu de 'some-file.txt" et "some-other-file.txt" dans tous les autres.
En règle générale, chaque fois que vous passez d'une fonction à une autre fonction (rappels), vous pourriez être en utilisant la asynchrone fonction de Javascript.
Imbriquée rappels
Une façon de résoudre ce problème est l'appel de la deuxième appel asynchrone dans la première fonction:
Mais comme vous l'avez deviné, ce code sera difficile à lire.
Promesses à la rescousse
Avec Promesses vous pouvez avoir un code plus facile à lire.
Allons écrire au-dessus de laide code avec des promesses:
En général, promet de rendre le code plus lisible et éviter de trop imbriqués pour les rappels. Vous pouvez de la chaîne d' promesses et il va lire comme code synchrone mais en fait il s'exécute de façon asynchrone.
Voir ces questions pour obtenir plus d'informations:
Quelle est la capture avec des promesses?
Si cela répond à votre question, s'il vous plaît marquer comme réponse afin que je puisse obtenir des points 🙂 Merci à vous.
merci! ouais vraiment répondu à mes questions, j'ai eu... l'info sur les promesses va également être utile dans le futur
Comme une note, jQuery 3.0
Deferred
objets sont maintenant en fait des Promesses/A+ compatible.OriginalL'auteur AlexStack
Javascript n'est pas asynchrone.
Fourni à la fois les si les conditions sont remplies, ce qui est à l'intérieur de la première si sera exécuté en premier et ensuite le contenu de la seconde si sera exécuté.
OriginalL'auteur Aravind