Javascript関数は正しく8回動作し、その後は毎回動作します

私は私の文書にリアルタイムで更新されている感覚を与えるために追加しようとしているJavaScript関数があります。 MVCコントローラへのAJAX呼び出しで、JSON結果を返し、それを一番上のリストに追加し、最後のliを非表示にして最後のliを削除します。

問題は、機能が完璧に8回働いて、つまらないということです。最初の8回の後、関数はリストの最後の項目を隠すだけです。だから、最初の8回の実行の後、私のリストはスクリプトの1回おきに1リットルずつ増えます:

ここに私の機能があります:

<script type="text/javascript">
    $(document).ready(function() {
        function latestBranch() {
            $.getJSON("Home/LatestWristband", null, function (html) {
                var showHideSpeed = 200;
                var firstLI = $("#recentBranches ul li").first();
                if (firstLI.text() !== html) {
                    firstLI.before('
  • ' + html + '<\li>'); $("#recentBranches ul li").first().hide().show(showHideSpeed); $("#recentBranches ul li").last().hide(showHideSpeed/4, function() { $("#recentBranches ul li").last().remove(); }); } }); }; setInterval(latestBranch, 500); }); </script>

    私はこれを動作させるためにいくつかのことを試みました。私の最初の考えは、スクリプトが最後のリスト項目を取り除くことよりも間隔が速かったことです。しかし、これをgetのために5000の間隔でテストし、要素のhide/showのために1000をテストしました。次の呼び出しの前に少なくとも3000ms余分に。私もこれを変更しようとしました:

    $("#recentBranches ul li").last().hide(showHideSpeed/4,
                            function() {
                                $("#recentBranches ul li").last().remove();
                            });
    

    に:

    $("#recentBranches ul li").last().remove();
    

    しかし、私は8回後に同じ問題を抱えています。それは毎回働くだけのこのリズムになった後、それはindefinetlyにそれを保つが、それはそうだ。私はaroudnを探してみましたが、私はこれらの症状を説明するものを見つけることができません...

  • 3
    追加された
    ビュー: 1
    誰かが、setTimeoutを、代わりに、完了後に関数を呼び出す関数の再帰オプションを使用して、遅延を伴って使用するように提案しました。私はそれを試みましたが、同じ問題があります。私はブラウザのキャッシュをクリアして、ブラウザのスクリプトが今変更したものであることを確認しました。
    追加された 著者 tostringtheory,

    1 答え

    間違ったスラッシュを使用して

  • を閉じています。つまり、リクエストごとに実際に2
    • を追加しています。 (2番目は空白です)

      この行を変更してください:

      firstLI.before('
    • ' + html + '<\li>');

      これに:

      firstLI.before('
    • ' + html + '
    • ');
      
  • 3
    追加された
    優秀な!愚かな間違いは、それをキャッチしている必要があります。私はそれが1つおきになる前に8回働いたので、私がしなかった理由があると思います。私は8回正しいことを理解することができました。リストには元々7つの項目があるので、7番目を削除すると、それは誤った李のものでした。しかし、なぜそれが毎回働いたのか説明できますか?それは7を削除し、その後追加を続けたが、決して削除しない場合、私はそれをキャッチした可能性があります。私はそれが本当に奇妙で面白いことがわかります
    追加された 著者 tostringtheory,
    ああ、申し訳ありませんが、私は2 liのリクエストごとに表示されませんでした!私は正しいあなたの答えをマークして、それをup'ed!本当にありがとう。
    追加された 著者 tostringtheory,