2015-04-30 12 views
5

Rozejrzałem się, próbując zrozumieć, w jaki sposób SetInterval, ale tylko znalazłem sposób korzystania z niego. Już wiem, że to funkcjonalność, jestem tylko ciekawa, jak można uruchomić coś w oddzielnym wątku, gdy JS nie obsługuje wątków (przynajmniej to czytam).Czy narzędzie SetInterval uruchamia operacje na osobnym wątku? Jak działa ta metoda?

Mam nadzieję, że poprawnie sformułowałem pytanie.

Dzięki.

+2

Wydaje chcesz dowiedzieć się o pętli zdarzeń: https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop –

+1

Jest sporo istniejących informacji na ten temat i wariantach - zobacz http://stackoverflow.com/questions/2253586, http://stackoverflow.com/questions/4037738, http://stackoverflow.com/questions/28650804, http://stackoverflow.com/questions/1663125 eg. (TLDR: setInterval * może * używać wątków wewnętrznie, ale * zawsze * wykonuje kod oddzwaniania w sposób atomowy/wzajemnie zwinięty z każdym innym wykonywanym JavaScript * w * tym samym kontekście programu: inna strona lub WebWorker lub ustanawia inny kontekst programu.) – user2864740

Odpowiedz

3

nie uruchamia niczego w innym wątku. Zaplanowano uruchomienie w określonym czasie pod warunkiem, że środowisko wykonawcze JS jest nieaktywne w tym czasie.

Można wypróbować ten problem z czymś takim:

setInterval(function(){ alert("Hello"); }, 1000); 
while (true) { } 

Nieskończona pętla będzie zapobiegać function z systemem, ponieważ środowisko wykonawcze JS utknął w pętli.

+0

Prawidłowo, ale potrzebuję trochę więcej informacji o tym, jak "działa w określonych godzinach". –

+1

@ JoséCorretjer-Gómez "Gdy nie jest uruchomiony żaden inny JavaScript". Powyższy przykład, z pętlą forever, * zawsze * utrzymuje kod JavaScript w tym samym kontekście programu, więc wywołanie zwrotne JavaScript timera nigdy nie może zostać uruchomione (nawet jeśli jest wewnętrznie wyzwalane). Przykład "bezczynności" byłby po załadowaniu strony i dodaniu procedur obsługi zdarzeń do elementów, ale nie ma uruchamiania wywołań zwrotnych tylko JavaScript oczekujących na uruchomienie (w tym timeout). – user2864740

+1

To, do czego odnosi się Timothy, nazywa się Pętlą Wydarzenia. Ten facet bardzo dobrze się z nim rozmawia: https://www.youtube.com/watch?v=8aGhZQkoFbQ – Edo

Powiązane problemy