ক্লিয়ারইন্টারওয়াল () কে সেটইন্টারভাল () এর ভিতরে বলা যেতে পারে?


124
bigloop=setInterval(function () {
              var checked = $('#status_table tr [id^="monitor_"]:checked');
                if (checked.index()===-1 ||checked.length===0 || ){
                    bigloop=clearInterval(bigloop);
                    $('#monitor').button('enable');
                }else{

                        (function loop(i) {                           
                            //monitor element at index i
                            monitoring($(checked[i]).parents('tr'));
                            //delay of 3 seconds
                            setTimeout(function () {
                                //when incremented i is less than the number of rows, call loop for next index
                                if (++i < checked.length) loop(i);
                            }, 3000);
                        }(0)); //start with 0
                }                            
            }, index*3000); //loop period

আমার উপরের কোডটি রয়েছে এবং কখনও কখনও এটি কাজ করে, কখনও কখনও তা হয় না। আমি ভাবছি ক্লিয়ারইন্টারভাল আসলে টাইমার সাফ করে কিনা ?? কারণ এই monitorবোতামটি কেবলমাত্র যখন এটি monitoringকার্যকরী হয় তখনই অক্ষম করা হবে । clearIntervalযখন আমি নামক উপাদানটি .outputRemoveক্লিক করা হয় তখন আমার আর একটি থাকে । নীচের কোডটি দেখুন:

//remove row entry in the table      
        $('#status_table').on('click', '.outputRemove', function () {
            deleted= true;
            bigloop= window.clearInterval(bigloop);
            var thistr=$(this).closest('tr');
            thistr.remove();
            $('#monitor').button('enable');

            $('#status_table tbody tr').find('td:first').text(function(index){
               return ++index;

            });
        });

এটি আবার অক্ষম হওয়ার আগে কিছুক্ষণের জন্য সক্ষম করা হয়েছিল। হবে clearIntervalথেকে প্রোগ্রামটি বের setIntervalফাংশন আছে?


সমস্যা কি loopnameদ্বিতীয় স্নিপেটে আছে? এটা কি?
bfavareto

টাইপস টাইপ। আমার একটি ফাংশন ছিল clearloop(loopname)যা এতে clearIntervalসহজ করার জন্য রয়েছে তবে আমি এটিকে উপরের কোডে সরাসরি পরিবর্তন করেছি।
yvonnezoe

উত্তর:


212

হ্যা, তুমি পারো. আপনি এটি পরীক্ষা করতে পারেন:

var i = 0;
var timer = setInterval(function() {
  console.log(++i);
  if (i === 5) clearInterval(timer);
  console.log('post-interval'); //this will still run after clearing
}, 200);

এই উদাহরণে, এই টাইমারটি i5 এ পৌঁছালে সাফ হয়ে যায়।


4
আমি দেখি. এটি কি সর্বদা স্থানীয় পরিবর্তনশীল হওয়া উচিত? আমার ক্ষেত্রে, আমি এটা বিশ্বব্যাপী হিসাবে সেট কারন আমি বাইরের ফাংশন যা clearInterval ডাকব নেই ... এবং, আমি সময়ে 2 setInterval হচ্ছে এবং তারা clashing থাকে: /
yvonnezoe

আমার এখানে একটি প্রশ্ন রয়েছে, এটি clearIntervalযদি setIntervalঅন্য কোথাও বন্ধ হয়ে যায় / তাত্ক্ষণিকভাবে শুরু না করে তবে এটি কি আটকে থাকবে ?
yvonnezoe

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

ঠিক আছে স্পষ্ট করার জন্য আপনাকে ধন্যবাদ! :) তবে এটি অবশ্যই আমার প্রোগ্রামে কিছু যুক্তিযুক্ত ত্রুটি হতে হবে।
yvonnezoe

1
এই দৃষ্টিভঙ্গিটি যে কাজ করে তা আমার মনকে বিচলিত করে। আমরা ভেরিয়েবল সংজ্ঞা নিজেই একটি পরিবর্তনশীল উল্লেখ করছি। এটি কীভাবে কাজ করবে যদি আমরা এখনও 'টাইমার' কী তা সংজ্ঞায়িত করে এবং তারপরে এটি ক্লিয়ারইন্টারওয়াল হিসাবে যুক্তি হিসাবে আখ্যায়িত করি?
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.