Essaie de retarder/pause/lent une boucle while en jQuery

J'ai regardé autour de beaucoup, et ne trouve pas encore de réponse. Peut-être que c'est simplement quelque chose qui ne peut pas être fait.

Je suis nouveau sur jQuery et JavaScript. Juste pour tester les limites, je suis en train de créer un script qui va continuellement ajouter un élément de liste à un non-ordonnée liste, tandis que d'une case à cocher n'est pas cochée. Je sais que je ne peut pas avoir mon tout énoncé correct dans la recherche si la case est cochée ou non, mais la principale question que je suis en ce moment est la boucle while se met à courir plus vite que le navigateur ne peut tenir en place, les écluses du haut de la page, et finalement je dois tuer le navigateur. J'ai lu de nombreux exemples sur setTimeout et setInterval, mais ce que j'ai en permanence voir, c'est ceux qui ne fonctionnent qu'avec un for/next style de boucle, où la boucle va pour un montant prédéterminé de cycles dépend d'une variable. Je ne veux pas de ça. Je veux la boucle de continuer jusqu'à ce que j'ai cocher la case et ensuite elle doit s'arrêter. Donc, je suis à la recherche d'un moyen pour mettre en pause la boucle ou le ralentir, donc 1) je peux voir chaque élément de la liste annexée à la page, et 2) le script va me donner une chance à la fin, il en cochant la case avant qu'il exécute le navigateur du gel et du suicide.

Merci à l'avance, le code est ci-dessous.

$(function(){
    $(document).ready(function() {loopLi();});
        var i = $('#jlist li').size();
        console.log(i);

        function loopLi() {
            while($('#Chckbox').not(":checked") ) {
                setInterval(function(){
                    i++;
                    $('<li>' + i + '</li>').appendTo('#jlist');
                }, 5000);
            }
        }
});

EDIT: Merci à tous. Ai eu de travail. N'a pas réalisé qu'une boucle while serait exécuter le code plusieurs fois en même temps. Cela est appris pour le travail, et le livre que nous avons actuellement n'est pas d'aller en profondeur avec des trucs. Actuellement à l'aide de jQuery: Novice à la Ninja. Autre chose que nous devrions regarder de répondre à ces types de questions, ou est-ce juste quelque chose qui vient avec le travail avec elle?

Seulement alors, vous comprenez pourquoi votre code a été le gel de votre navigateur: vous avez été l'exécution de la fonction setInterval dans la boucle while, des millions de fonction setInterval appels ont été faits, si vous avez ajouté des millions de minuteries pour votre page, qui paralysent votre navigateur. La morale de cette histoire est, de ne pas exécuter un appel asynchrone dans un (quasi -) boucle infinie.

OriginalL'auteur JHStarner | 2011-07-13