/ / Wykonywanie żądania ajax bez blokowania ładowania strony - google-chrome, jquery

Wykonywanie żądania ajax bez blokowania ładowania strony - google-chrome, jquery

Muszę wykonać bardzo wolne wywołanie ajax na stronie ładowania. Problem polega na tym, że w chromie małe kółko na karcie obraca się aż do zakończenia wywołania ajax. W Firefox 4 i IE9 działa zgodnie z oczekiwaniami.

obecnie używam

$(document).ready(function () {
$.doTimeout(1000, slowRequest);
});

limit czasu pomaga, ponieważ pozwala przeglądarce nakontynuuj, a jeśli przeglądarka zostanie wykonana przed upływem limitu czasu, wszystko jest w porządku, ale odkryłem, że w zależności od tego, jak wolno klient / serwer, czas może nie być wystarczająco długi.

Czy istnieje lepszy sposób na osiągnięcie tego?

Odpowiedzi:

1 dla odpowiedzi № 1

Szczerze mówiąc, myślę, że nie powinieneś przejmować się wirującym kołem w przeglądarce, ale troszcz się o kolejność wykonywania kodu. Po prostu zrobiłbym:

$(document).ready(function () {
slowRequest();
});

Lub, setTimeout(slowRequest, 0);, chodzi o to, aby uruchomić żądanie ajax, gdy masz już dane do wysłania i gdzie je otrzymać.

Z opóźnieniem 1 sekundy, unikasz wirującego koła w niektórych przeglądarkach, ALE poświęcasz czas (1 sekunda opóźnienia!). Myślę, że jest to ważniejszy czas wykonania niż szczegóły wizualne.

Oczywiście twoje żądanie ajax musi być asynchroniczne (mam nadzieję, że tak jest), jeśli nie, przeglądarka się zawiesi.

Mam nadzieję że to pomoże. Twoje zdrowie


0 dla odpowiedzi nr 2

Odkąd wspomniałeś o problemie z Chrome, na stronie script znacznik zawierający kod do powolnego wywołania AJAX, możesz spróbować dodać async atrybut podobny do tego:

<script type="text/javascript" async="async">
...
</script>

Uważam, że atrybut działa w Firefoksie 3.6+ i Chrome, ale nie w żadnej z innych przeglądarek :(