Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > pl.comp.lang.javascript > #3494

Re: Promise i oczekiwanie na wynik

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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