Thursday 16 November 2017

javascript - Can clearInterval() be called inside setInterval()?

itemprop="text">

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


I have the code
above and sometimes it is working, sometimes it is not. I am wondering if
the clearInterval actually clear the timer??
because there is this
monitor button that will only be disabled when it is in
monitoring function. I have another
clearInterval when an element called
.outputRemove is clicked. See the code
below:



//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;

});


});


But it was enabled
for a while before it is disabled again. Will
clearInterval get the program out from the
setInterval function?



Answer




Yes you can. You can even test
it:



data-hide="false" data-console="true" data-babel="false">
class="snippet-code">
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);





In
this example, this timer clears when i reaches
5.



No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...