Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подскажите как грамотно прекратить и возобновить setInterval? (https://javascript.ru/forum/misc/75152-podskazhite-kak-gramotno-prekratit-i-vozobnovit-setinterval.html)

Artur_Hopf 07.09.2018 13:12

Подскажите как грамотно прекратить и возобновить setInterval?
 
Добрый день. Допустим есть функция которая запускается после загрузки страницы:
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<button onclick="test ()">Вызов функции</button>
<div id="hello"></div>
<script type="text/javascript">
$(document).ready(function(){
    test ();
});

function test (){
      var data = 'привет';
      consol(data);
}

function consol(data){
      $("#hello").append(data+' ');
      setTimeout(function() { 
          consol(data);
     }, 2000); 
}

</script>

Внутри функции работает setTomeout, и если вызвать первую функцию как то еще, она дублируется.
Сам вопрос, как вызвав эту функцию например с кнопки, чтобы обновление старой функции прекратилось? Чтобы обновлялась только последняя вызванная функция.:-?

ksa 07.09.2018 13:38

Цитата:

Сообщение от Artur_Hopf
как грамотно прекратить и возобновить setInterval?

У тебя в примере нет setInterval()... :no:
Цитата:

Сообщение от Artur_Hopf
чтобы обновление старой функции прекратилось?

Нужно чтобы функция "знала", что не нужно опять выполнять setTimeout().

ksa 07.09.2018 13:57

Цитата:

Сообщение от Artur_Hopf
Внутри функции работает setTomeout, и если вызвать первую функцию как то еще, она дублируется.
Сам вопрос, как вызвав эту функцию например с кнопки, чтобы обновление старой функции прекратилось?

Если я правильно понял "вопрос", то как вариант...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	test('One');
});
function test (data){
	consol(data);
}
function consol(data){
	if (consol.id!==undefined) {
		clearTimeout(consol.id);
	};
	$("#hello").text(data+' '+new Date());
	consol.id=setTimeout(function() { 
		consol(data);
	}, 2000); 
}
</script>
</head>
<body>
<button onclick="test('Two')">Вызов функции</button>
<div id="hello"></div>
</body>
</html>

Artur_Hopf 07.09.2018 15:00

ksa,
Заработало =)) спасибо, это чудо прям какое то=))


Часовой пояс GMT +3, время: 14:00.