Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Высокое потребление оперативной памяти (https://javascript.ru/forum/misc/44344-vysokoe-potreblenie-operativnojj-pamyati.html)

Raoul 16.01.2014 14:30

Высокое потребление оперативной памяти
 
<script type="text/javascript">
	function start(){
		setInterval(reloadImg,1000);	
	}

    function reloadImg() 
    {
        $.getJSON('getImageName.php',function(data)
        {
        	img = document.getElementById('Сam');
        	img.src='/img/'+data.path;
        });

    }	
</script>

После вызова функции «start», скрипт каждую секунду подгружает картинку. Имя новой картинки, которую нужно подргузить, генерируется в файле «getImageName.php».
Скрипт очень прожорливый получился , не подскажите как быть?

melky 16.01.2014 15:00

Откуда узнали, что прожорливый?

Raoul 16.01.2014 15:11

Цитата:

Сообщение от melky (Сообщение 292440)
Откуда узнали, что прожорливый?

Заглянул в диспетчер задач, особенно с оперой проблемы.
1 Гб съел, когда я открыл через несколько минут.

melky 16.01.2014 15:17

а можно взглянуть?

Raoul 16.01.2014 15:19

Да, http://goo.gl/XxRdzr

рони 16.01.2014 15:28

Raoul,
тег картинки некорректен плюс каждая новая картинка запускает дополнительный интервал

Raoul 16.01.2014 15:35

Цитата:

Сообщение от рони (Сообщение 292448)
Raoul,
тег картинки некорректен плюс каждая новая картинка запускает дополнительный интервал

Спасибо, не заметил этого сразу.
Если изменить обработчик события на onClick, это решит проблему?

Действительно. Но в коде ошибки не нашел.
echo '<img src="'.$path.'" id="camEkb" onload="start()">';

рони 16.01.2014 15:48

Raoul,
а просто
.ready() или .load()
на готовность страницы повесить запуск или использовать не setInterval а setTimeout но предусмотреть ошибки -- src

рони 16.01.2014 15:49

Raoul,
как-то так
<!DOCTYPE html>
<html>
<head>

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
	function start(){
	   window.setTimeout(reloadImg,1000)

	}

    function reloadImg()
    {
        $.getJSON("getImageName.php")
  .success(function(data) {
            img = document.getElementById('camEkb');
        	img.src='http://online.ts6.ru/img/'+data.path; })
  .error(function() { start() })

    }
</script>
</head>
<body>
<img src="/img/live-20140116-190251.jpg" id="camEkb" onload="start()"  >
</body>
</html>

Raoul 16.01.2014 16:02

Спасибо за ответ, проблема заключалась в постоянном вызове интервала.
Да, это тоже будет очень кстати, дважды спасибо :thanks:


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