Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   setInterval исполняет функцию только однократно (https://javascript.ru/forum/events/65210-setinterval-ispolnyaet-funkciyu-tolko-odnokratno.html)

Svarogich 04.10.2016 12:10

setInterval исполняет функцию только однократно
 
Здравствуйте, уважаемые форумчане!
Прошу помочь в решении такой проблемы:
<script type="text/javascript">
                function show(url, block) {
                    //alert("show()" + url);
                    url_target = url;
                    $.ajax({
                        cache: false,
                        url: url_target,
                        success: function (html) {
                            block.html(html);
                        }
                    });
                }

                function showAll() {
                    show('../DataTable.html', $('#DataListPlaceholder'));
                    show('../Graph.html', $('#GraphPlaceholder'));
                }

                $(document).ready(function () {
                    setInterval(show('../DataTable.html', $('#DataListPlaceholder')), 5000);
                    setInterval(show('../Graph.html', $('#GraphPlaceholder')), 5000);
                });
</script>

Здесь вызовы функции show() происходят однократно, а не каждые 5 секунд. Файлы, передаваемые как url, поначалу могут не существовать, создаются контроллером (ASP.NET MVC) в фоновом потоке.
Хотелось бы, чтобы по мере создания/обновления файлов, они отражались на главной вьюшке.

С JavaSсript работаю впервые, поэтому прошу объяснять как тупому.
Заранее огромное спасибо за помощь!

Aetae 04.10.2016 12:33

show(...) - это вызов функции.
Ваш setInterval соответственно пытается запустить результат вызова - то, что функция вернула.

Нужно либо:
setInterval(show, 5000);
а конкретные ссылки определять в самой функции, либо оборачивать:
setInterval(function(){
    show(...);
}, 5000);

Svarogich 04.10.2016 12:48

спасибо большое! Теперь работает :)


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