জাভাস্ক্রিপ্ট ফাংশন সঠিকভাবে 8 বার, তারপর প্রতি অন্যান্য সময় কাজ করে

আমার কাছে একটি জাভাস্ক্রিপ্ট ফাংশন রয়েছে যা আমি আমার নথিতে যোগ করার চেষ্টা করছি, এটি রিয়েল টাইমে আপডেট হওয়ার একটি ধারনা দিতে। এটি আমার এমভিসি কন্ট্রোলারের জন্য একটি AJAX কল যা একটি JSON ফলাফল প্রদান করে এবং শীর্ষে তালিকায় যোগ করে এবং তারপর শেষ লিটিকে লুকিয়ে রাখে, এবং তারপর শেষ লি মুছে দেয়।

সমস্যা হল, ফাংশন 8 বার ত্রুটিহীনভাবে কাজ করে, এবং তারপর স্ক্রু যায়। প্রথম 8 বারের পরে, ফাংশন শুধুমাত্র তালিকায় শেষ আইটেমটিকে লুকিয়ে রাখে, অন্য সময় এটি শীর্ষে এক যোগ করে। সুতরাং প্রথম 8 রান করার পর, আমার তালিকা স্ক্রিপ্টের প্রতিটি অন্য রানকে 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>

    আমি কাজ এই পেতে বেশ কিছু জিনিস চেষ্টা করেছি। আমার প্রথম চিন্তা হলো স্ক্রিপ্টটি শেষ তালিকার আইটেমটি থেকে মুক্তি পাওয়ার চেয়ে ব্যবধান দ্রুত ছিল, তবে আমি এটির জন্য 5000 এর ব্যবধানের সাথে পরীক্ষা করেছি এবং 1000 টি উপাদান লুকানোর/প্রদর্শন করার জন্য এটি পরীক্ষা করেছি। পরবর্তী কল আগে অন্তত 3000ms। আমি এটি পরিবর্তন করার চেষ্টা করেছি:

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

    করুন:

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

    তবে আমি 8 বার পরে একই সমস্যা পেতে। মনে হচ্ছে যে এটি কেবলমাত্র অন্য সময় কাজ করার এই তালে পরে গেলে এটি অনির্ধারিতভাবে রাখে। আমি উদ্দীপ্ত চেহারা চেষ্টা করেছি, কিন্তু আমি এই লক্ষণ ব্যাখ্যা করবে যে কিছু খুঁজে পাওয়া যাবে না ...

  • 3
    কেউ কেউ প্রস্তাব করেছিল যে আমি পরিবর্তনের পরে নিজেকে কল করার ফাংশনটির পুনরাবৃত্তি বিকল্প সহ সেটটাইম ব্যবহার করব। আমি চেষ্টা করেছিলাম, কিন্তু একই সমস্যা আছে। আমি ব্রাউজার ক্যাশে সাফ করেছি এবং যাচাই করেছি যে ব্রাউজারের স্ক্রিপ্টটি আমি কেবলমাত্র পরিবর্তন করেছি।
    যোগ লেখক tostringtheory, উৎস

    1 উত্তর

    আপনি

  • বন্ধ করার জন্য ভুল স্ল্যাশ ব্যবহার করছেন, যার অর্থ আপনি আসলে প্রতি অনুরোধে
    • গুলি যোগ করছেন। (দ্বিতীয়টি ফাঁকা)

      এই লাইন পরিবর্তন করুন:

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

      এই জন্য:

      firstLI.before('
    • ' + html + '
    • ');
      
  • 3
    যোগ
    অসাধারণ! মূঢ় ভুল, এটা ধরা উচিত। আমি কারণ আমি না কারণ অনুমান কারণ এটি শুধুমাত্র প্রতিটি অন্যান্য আগে 8 বার কাজ করে। আমি 8 বার সঠিক বুঝতে পেরেছি, কারণ মূলত তালিকাটিতে 7 টি আইটেম রয়েছে, তাই যখন এটি 7 ম সরিয়ে ফেলা হয়, তখন এটি ভুল লি এর ছিল। তবে, আপনি ব্যাখ্যা করতে পারেন কেন এটি অন্য সময় কাজ করে? এটি শুধুমাত্র 7 মুছে ফেলা হলে, এবং তারপর যোগ করা রাখা, কিন্তু সরানো না, আমি যে ধরা হতে পারে। আমি যে সত্যিই অদ্ভুত এবং আকর্ষণীয় খুঁজে!
    যোগ লেখক tostringtheory, উৎস
    আহ, দুঃখিত, আমি ২ লি এর প্রতি অনুরোধ দেখিনি! আমি আপনার উত্তর সঠিক যদিও চিহ্নিত করেছি, এবং এটি আপ! অনেক ধন্যবাদ.
    যোগ লেখক tostringtheory, উৎস