• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

animacja się zatrzymuje podczas wykonywania funkcji

VPS Starter Arubacloud
+1 głos
174 wizyt
pytanie zadane 23 lipca 2021 w JavaScript przez stellatus Obywatel (1,390 p.)
Mam taki przykład:

https://codepen.io/reti/pen/YzVEqxr

Po naciśnięciu "Download PDF" albo "Render PDF" animacja się zatrzymuje. Rozumiem, że jest to związane z jednowątkowością JS i trzeba zmienić kod na asynchroniczny, zgadza się? Czy idę w ogóle dobrym tropem? Jeżeli tak, to nad czym dokłądnie powinienem się skupić? Na Promise? Studiuję już trochę temat asynchroniczności, ale nadal to jest dla mnie czarna magia.

Po co mi to?

Czasami renderowane PDF-y mają duże rozmiary (szczególnie gdy zawierają grafikę) i trzeba trochę poczekać. Wtedy powinien pojawić się loader.
komentarz 23 lipca 2021 przez ScriptyChris Mędrzec (190,190 p.)
Masz na myśli, że ten GIF się całkiem zatrzymuje czy przywiesza na chwilę? Bo na CodePen nie widzę, żeby to zatrzymywało po naciśnięciu wspomnianych przycisków, ale chyba delikatnie się przycina na moment.
komentarz 23 lipca 2021 przez stellatus Obywatel (1,390 p.)
Dzięki za odpowiedź. Chodziło mi o to, że przywiesza na chwilę, ale ta chwila wydłuża się w zależności od wielkości PDF.
komentarz 23 lipca 2021 przez ScriptyChris Mędrzec (190,190 p.)

Hmm, w kodzie ustawiasz jakąś opcję PDFJS.disableWorker, podczas gdy ta biblioteka raczej nie ma takiej opcji (przejrzyj źródło kodu, który podpinasz na CodePen). W każdym razie, mógłbyś procesowanie PDF-a wykonać właśnie w Workerze (czyli pójść w wykorzystanie osobnego wątku) i wynik przesłać do głównego wątku, aby wrzucić go w DOM (sam Worker na to nie pozwala).

komentarz 24 lipca 2021 przez stellatus Obywatel (1,390 p.)
Dzięki wielkie i przepraszam za zamieszanie. Potrzebny jest mi tylko eksport do pliku. Ta część kodu, która umożliwia podgląd na stronie jest mi do niczego niepotrzebna i powinienem ją wywalić z codepena (co właśnie zrobiłem). Swoją drogą tam coś też chyba nie gra, bo przy dużych plikach (np. ze zdjęciami) trwa to bardzo wolno. Stąd pomysł wyświetlania spinnera.

1 odpowiedź

0 głosów
odpowiedź 23 lipca 2021 przez stellatus Obywatel (1,390 p.)
Problem rozwiązałem poprzez użycie bilbioteki https://spin.js.org/

Niestety nie rozumiem jak to działa, ale na razie to mi wystarczy.

Podobne pytania

+1 głos
1 odpowiedź 366 wizyt
+1 głos
0 odpowiedzi 142 wizyt
pytanie zadane 14 maja 2019 w JavaScript przez BT101 Stary wyjadacz (12,540 p.)
+1 głos
3 odpowiedzi 546 wizyt
pytanie zadane 11 kwietnia 2021 w C# przez tomasz12345 Użytkownik (750 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...