Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > pl.comp.lang.javascript > #3494
| From | Roman Tyczka <noemail@because.no> |
|---|---|
| Newsgroups | pl.comp.lang.javascript |
| Subject | Re: Promise i oczekiwanie na wynik |
| Date | 2018-08-10 18:19 +0200 |
| Organization | ATMAN - ATM S.A. |
| Message-ID | <3gdptg2lfrnd.dlg@tyczka.com> (permalink) |
| References | <1jv3988qj6pyf.dlg@tyczka.com> <nu2wq6mg704y$.wuh3wxwx318r$.dlg@40tude.net> <1x6oxswxeel0t$.dlg@tyczka.com> <19s5kvtfto3zr.bj8wdjlcy4l2.dlg@40tude.net> <pkk72b$2gvk$1@csiph.com> |
On Fri, 10 Aug 2018 17:22:02 +0300, Cezary Tomczyk wrote: > On 10/08/2018 12:53, Borys Pogoreło wrote: >> Dnia Wed, 8 Aug 2018 23:34:09 +0200, Roman Tyczka napisał(a): > [...] >>> ps. dlaczego w ogóle ten moduł crypto wsadzili w Promise? Z powodu >>> złożoności obliczeniowej i realnie długiego czasu wykonania? >> >> Tak. Wszelkie operacje synchroniczne blokują event loop. > > Garść o tym: > https://medium.com/@siddharthac6/javascript-execution-of-synchronous-and-asynchronous-codes-40f3a199e687 To nie wyjaśnia wszystkiego, bo użyty został fatalny przykład z tym setTimeout(). Czekanie 2 sekundy nic nie kosztuje. I jest łatwe do implementacji tak jak to opisano. Ale co z sytuacją, gdy funkcja asynchroniczna robi coś "grubego" w tle, jak choćby to liczenie hasza? Czy wtedy: a) jest oczekiwanie na pustego call stacka i wrzucenie całego "grubego" zadania do wykonania (tak wynika z artykułu)? b) czy może to poboczne zadanie jest dzielone na fragmenciki i wywoływane po kawałku w wolnych chwilach (tak jak w aplikacjach z prawdziwą wielowątkowościa)? Druga opcja ma większy sens, ale jest dużo trudniejsza w implementacji. Zatem nadal nie wiem czy wiem co się tam tak naprawdę dzieje :-) Zwłaszcza, że autor arta sam pisze na końcu: "I don’t know how accurately I am able to demonstrate this topic but there are a lot in between that could have been elaborated or explained better, but am in a rush and it’s already too long already. Hope it helps someone." ps. W Delphi (jeśli mowa o programowaniu bez wątków) też istnieje coś takiego jak timer i też można mu zapodać zrobienie czegoś za określony czas i działa to tak jak opisano w tym artykule, czyli pętla komunikatów dostaje komunikat WM_TIMER i adres procedury obsługi, którą wywołuje jeśli nie jest akurat niczym zajęta. To dość uboga "asynchroniczność", ale czasami wystarcza. Gdyby jednak procedura spod timera była długotrwała to pętla komunikatów zostanie zablokowana i aplikacja przestanie odpowiadać (często to widać w źle napisanych aplikacjach, gdy GUI przestaje się rysować i nie działają kontrolki). -- pozdrawiam Roman Tyczka
Back to pl.comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar
Promise i oczekiwanie na wynik Roman Tyczka <noemail@because.no> - 2018-08-07 16:35 +0200
Re: Promise i oczekiwanie na wynik Borys Pogoreło <borys@pl.edu.leszno> - 2018-08-08 22:29 +0200
Re: Promise i oczekiwanie na wynik Roman Tyczka <noemail@because.no> - 2018-08-08 23:34 +0200
Re: Promise i oczekiwanie na wynik Borys Pogoreło <borys@pl.edu.leszno> - 2018-08-10 11:53 +0200
Re: Promise i oczekiwanie na wynik Roman Tyczka <noemail@because.no> - 2018-08-10 12:49 +0200
Re: Promise i oczekiwanie na wynik Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2018-08-10 17:22 +0300
Re: Promise i oczekiwanie na wynik Roman Tyczka <noemail@because.no> - 2018-08-10 18:19 +0200
Re: Promise i oczekiwanie na wynik Borys Pogoreło <borys@pl.edu.leszno> - 2018-08-10 22:31 +0200
csiph-web