• 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

+1 głos
460 wizyt
pytanie zadane 23 lipca 2021 w JavaScript przez mikolaj.k Obywatel (1,430 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,170 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 mikolaj.k Obywatel (1,430 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,170 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 mikolaj.k Obywatel (1,430 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 mikolaj.k Obywatel (1,430 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ź 1,174 wizyt
+1 głos
0 odpowiedzi 255 wizyt
pytanie zadane 14 maja 2019 w JavaScript przez BT101 Stary wyjadacz (12,540 p.)
+1 głos
3 odpowiedzi 1,451 wizyt
pytanie zadane 11 kwietnia 2021 w C# przez tomasz12345 Użytkownik (750 p.)

93,733 zapytań

142,669 odpowiedzi

323,287 komentarzy

63,293 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...