Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]jak ukryć lub pominąć wyświetlanie jednego warningu?
elmozaur
post 2.08.2016, 12:39:26
Post #1





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


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 @) ?


Go to the top of the page
+Quote Post
viking
post 2.08.2016, 14:29:49
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


A jaki jest sens stosowania sync? Blokujesz wykonywanie a i tak pewnie powinieneś doczytać o deferred.


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post 2.08.2016, 14:37:14
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


a w czym CI przeszkadza ten błąd? Bo zakładam że widzisz go w konsoli.
Go to the top of the page
+Quote Post
Comandeer
post 2.08.2016, 15:16:24
Post #4





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
elmozaur
post 2.08.2016, 19:20:21
Post #5





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
viking
post 2.08.2016, 19:52:13
Post #6





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
Comandeer
post 2.08.2016, 20:22:28
Post #7





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


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ę.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 01:05