Est-il possible d'arrêter l'exécution de javascript/jquery?
Fondamentalement, je veux être en mesure de terminer une commande dans un $.holdTillFinished() méthode qui ne permet pas l'exécution continue jusqu'à ce que la méthode spécifiée/jquery animation est terminée en cours d'exécution.
Je suppose que cela peut être difficile, voire impossible en javascript, mais je suis en espérant que quelqu'un saura.
Je ne veux pas entendre parler de comment je peux passer un rappel dans une animation pour l'exécuter oncomplete, ou autre chose comme ça.
Je veux vraiment savoir si une telle chose est possible et comment le faire.
Si ce n'est pas qui va se passer si quelqu'un connaît une belle file d'attente plugin qui est capable de faire la file à la fois défini par l'utilisateur des méthodes et des animations, qui serait cool aussi. Ce que je veux vraiment, c'est un moyen de retarder l'exécution.(tout en permettant à des animations à la fonction)
Je n'ai pas vu une file d'attente qui fonctionne pour les fonctions. Ce que je veux dire est que si je passe une animation, puis une fonction, puis une animation dans la file d'attente alors que ces animations sont à jouer de la fonction ne doit pas être en cours d'exécution. Aussi je ne veux pas avoir à spécifier la durée de la fonction à exécuter.
Mais vraiment ce que je veux c'est un wrapper qui s'arrête toutes les fonctions javascript jusqu'à ce que la fonction/animation que j'ai passé dans il a résolu de
OriginalL'auteur thirsty93 | 2009-03-25
Vous devez vous connecter pour publier un commentaire.
Votre suspicion est correct. Des méthodes telles que des animations, de la saisie de l'utilisateur et les boucles ‘async=true’ XMLHttpRequests doit de contrôle de retour pour le navigateur afin de procéder, et le navigateur ne peut pas revenir de contrôle jusqu'à ce que chaque niveau d'imbrication de la fonction d'appel est de retour. Cela signifie que tout votre code, y compris la fonction qui a appelé ‘holdTillFinished () "pour se détendre: donc" holdTillFinished()’ est impossible.
D'autres langues ont le contrôle du flux de fonctionnalités qui vous permettent d'exécuter efficacement un processus asynchrone comme celui qui apparaît à l'appelant d'être synchrone, et de même vice-versa. Les plus connues sont fils et les continuations. JavaScript n'est pas en possession de ces installations, de sorte que le meilleur que vous pouvez faire est de timeouts et les rappels.
(Définition d'un rappel comme une fonction en ligne pour accéder à la fonction englobant des variables dans une fermeture permet au moins de prendre la douleur hors de lui; quelques autres langues ont pour démarrer emballage tous les bits de l'enfermer de l'état dans les propriétés d'un objet pour atteindre cet objectif.)
Bien à peu près tous moderne (navigateur) langues vous donner des threads, en utilisant le support de l'OS. Suites/coroutines peuvent être trouvés dans au moins Haskell, ML et un Schéma et quelques extensions à d'autres langues (par exemple. Stackless Python); il y a des primitives en C qui peut être utilisé pour construire les suites.
Bien sûr, dans le navigateur du monde, vous êtes coincé: en dehors de JavaScript il n'y a qu'VBScript, et c'est encore pire! JavaScript 1.7 (dans Firefox 2) vous donne Python-style générateurs, qui sont une forme limitée de poursuite qui ne serait pas vraiment vous aider ici.
Zut, j'ai fait "quelles langues doivent commencer emballage tous les bits de l'enfermer de l'état dans les propriétés d'un objet pour y parvenir?".
Langues sans première classe de fonctions et de fermetures, tel que C[++] et Java. (Java anonyme inline classes peut presque le faire, qu'ils peuvent le lire mais pas écrire fonction externe variables.)
OriginalL'auteur bobince
Vous êtes probablement à la recherche pour http://docs.jquery.com/Effects/queue
Mais si vous êtes à la recherche d'une plus généralisée de retarder les choses, j'ai utilisé cet extrait avant (je n'ai pas l'écrire, donc tout le crédit va à l'auteur original):
C'est mieux que rien. Mais c'est vraiment pas ce que je cherche.
OriginalL'auteur FlemishBeeCycle
Vous pouvez utiliser un publier/souscrire architecture d'obtenir ce que vous voulez. Sans trop savoir exactement ce que vous voulez atteindre, je suppose que ça va travailler pour vous.
La façon dont cela fonctionne est que vous cherchez à la fin de la fonction comme un événement, ce qui vous permet d'écouter et de associer des gestionnaires. Dojo dispose d'un mécanisme de pubsub, mais je suis sûr qu'il y en existe d'autres.
OriginalL'auteur Rakesh Pai
Il défend sur la situation, mais normalement, il est nécessaire de justifier d'un traitement de l'image doit être affichée lors de l'AJAX est appelé ou une boucle est en cours d'exécution dans le code javascript. J'ai une situation où je fais appel AJAX dans une boucle, pour l'utilisateur pour afficher le traitement de l'image est affiché. Pour mettre fin j'ai fait un truc. J'ai mis un bouton pour annuler le travail lorsque cette fonction est appelée, j'définir une variable globale de dire "cancelJob" pour de vrai et dans la boucle où je suis vérification de ce mondial si cela est vrai, la course de retour faux et le script s'arrête.
OriginalL'auteur Tariq Aziz