Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]jak ukryć lub pominąć wyświetlanie jednego warningu?
Forum PHP.pl > Forum > Przedszkole
elmozaur
Witam,
mam aplikacje wykonującą zapytania AJAXowe za pośrednictwem API aktualnego jQuery.
Problem w tym, że część zapytań muszę wykonać z opcją async:false co powoduje wyświetlenie warningu:
"Użycie synchronicznej wersji metody XMLHttpRequest w głównym wątku jest przestarzałe z powodu szkodliwych efektów ubocznych. Więcej informacji można znaleźć na stronie http://xhr.spec.whatwg.org"
Pytanie:
czy tylko w konkretnych przypadkach można jakoś wyłączyć raportowanie warningów z JS (taki odpowiednik PHPowego @) ?


viking
A jaki jest sens stosowania sync? Blokujesz wykonywanie a i tak pewnie powinieneś doczytać o deferred.
Pyton_000
a w czym CI przeszkadza ten błąd? Bo zakładam że widzisz go w konsoli.
Comandeer
Jeśli używa się Ajaksa synchronicznie, używa się go źle. Kropka.

Wyjaśnij czemu tak robisz a my Ci powiemy, gdzie zrobiłeś błąd wink.gif Bo prawdę mówiąc Ajax powstał właśnie po to, by być asynchroniczny (hint: stąd mamy Ajax, nie Sjax!) – inaczej blokujesz główny wątek przeglądarki i JS nie wykona nic (choćby obsługi głupiego kliku!) w chwili wykonywania żądania.
elmozaur
Uruchomienie procesu AJAXowego (w zasadzie tylko w jednym przypadku-na początku działania aplikacji) pobiera z bazy i przetwarza sporą porcję danych. Chciałem aby był to proces nieprzerywalny. Reszta zadań wykonywanych jest już zgodnie ze sztuką asynchroniczności.
Pyton_000: tak masz rację tylko w konsoli i kontrolkach web developer toolbar (jako informacja a nie błąd);
viking: czy masz na myśli - https://api.jquery.com/category/deferred-object/ - nigdy tego nie używałem
viking
No to pora zacząć bo całe aktualne jquery jak sam napisałeś bardzo mocno na nim bazuje.
Jak dla mnie nie ma znaczenia czy pobierasz dane w tle. I tak dopoki nie zostaną załadowane przetworzone nie jesteś w stanie ich używać. Po co tutaj blokować przeglądarkę naprawdę nie wiem.
Comandeer
Tak po prawdzie Deferred w jQuery (a zwłaszcza w jQuery 3.0+) to po prostu Promises, więc znać trzeba.

Asynchroniczne operacje też są "nieprzerywalne". Jak chcesz faktycznie czuć tę nieprzerywalność, to zostaje Ci albo zabawa z generatorami, albo pójście w nowe async/await.

Inna rzecz: na ile te dane z bazy są zmienne? Bo może się okazać, że wrzucenie tego do IndexedDB/localStorage pozwoli przyspieszyć apkę.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.