Testowałem dokładność setTimeout
użycia tego testu . Teraz zauważyłem, że (zgodnie z oczekiwaniami) setTimeout
nie jest zbyt dokładny, ale w przypadku większości urządzeń nie jest dramatycznie niedokładny. Teraz, jeśli uruchomię test w Chrome i pozwolę mu działać na karcie w tle (więc przełączam się na inną kartę i przeglądam tam), wracam do testu i sprawdzam wyniki (jeśli test się skończył), są dramatycznie zmieniane. Wygląda na to, że limity czasu są znacznie wolniejsze. Testowane w FF4 lub IE9 to nie wystąpiło.
Wygląda więc na to, że Chrome zawiesza lub przynajmniej spowalnia wykonywanie javascript na karcie, która nie jest aktywna. Nie udało się znaleźć w sieci zbyt wielu informacji na ten temat. Oznaczałoby to, że nie możemy uruchamiać zadań w tle, takich jak na przykład okresowe sprawdzanie na serwerze za pomocą wywołań XHR i setInterval
(podejrzewam, że widzę to samo zachowanie setInterval
, napiszę test, jeśli czas jest ze mną).
Czy ktoś to spotkał? Czy byłoby jakieś obejście tego zawieszenia / spowolnienia? Czy nazwałbyś to błędem i czy powinienem to zgłosić jako taki?