Czy istnieje sposób na okresowe wywoływanie funkcji w JavaScript?
javascript
javascript-events
coderex
źródło
źródło
setInterval()
to poprawna odpowiedź na pytanie, bez względu na parametr. To tylko przykład, a obie metody są z definicji poprawne.Pamiętaj, że metoda setInterval () często nie jest najlepszym rozwiązaniem do okresowego wykonywania - to naprawdę zależy od tego, jaki javascript faktycznie wywołujesz okresowo.
na przykład. Jeśli używasz setInterval () z okresem 1000 ms iw funkcji okresowej wykonujesz wywołanie Ajax, które czasami zajmuje 2 sekundy, będziesz wykonywać kolejne wywołanie Ajax, zanim wróci pierwsza odpowiedź. Zwykle jest to niepożądane.
Wiele bibliotek ma okresowe metody, które chronią przed pułapkami wynikającymi z naiwnego używania setInterval, na przykład przykład Prototype podany przez Nelsona.
Aby uzyskać bardziej niezawodne wykonywanie okresowe z funkcją, która zawiera wywołanie jQuery ajax, rozważ coś takiego:
Innym podejściem jest użycie setTimeout, ale śledzenie czasu, który upłynął w zmiennej, a następnie dynamiczne ustawianie opóźnienia limitu czasu przy każdym wywołaniu, aby wykonać funkcję tak blisko żądanego interwału, jak to możliwe, ale nigdy szybciej niż można uzyskać odpowiedzi.
źródło
Każdy ma już rozwiązanie setTimeout / setInterval. Myślę, że ważne jest, aby pamiętać, że możesz przekazywać funkcje do setInterval, a nie tylko ciągi znaków. W rzeczywistości prawdopodobnie jest trochę „bezpieczniejsze” przekazywanie rzeczywistych funkcji zamiast ciągów, które będą „oceniane” do tych funkcji.
Lub:
źródło
Stare pytanie, ale ... potrzebowałem też okresowego programu do uruchamiania zadań i napisałem TaskTimer . Jest to również przydatne, gdy musisz uruchomić wiele zadań w różnych odstępach czasu.
TaskTimer
działa zarówno w przeglądarce, jak iw Node. Zobacz dokumentację dla wszystkich funkcji.źródło
Będziesz chciał rzucić okiem na setInterval () i setTimeout ().
Oto przyzwoity artykuł z samouczkiem .
źródło
tak - przyjrzyj się
setInterval
isetTimeout
wykonaj kod w określonych momentach. setInterval będzie tym, który będzie używany do okresowego wykonywania kodu.Zobacz demo i odpowiedz tutaj na użytkowanie
źródło
źródło
Ponieważ chcesz, aby funkcja była wykonywana okresowo , użyj setInterval
źródło
Natywny sposób to rzeczywiście
setInterval()
/clearInterval()
, ale jeśli korzystasz już z biblioteki Prototype , możesz skorzystać z PeriodicalExecutor:Zapobiega to nakładaniu się połączeń. Od http://www.prototypejs.org/api/periodicalExecuter :
źródło