🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.javascript
Article #51924

Re: Promise i oczekiwanie na wynik

#51924
From: Roman Tyczka
Date: Fri, 10 Aug 2018 16:19
47 lines
3167 bytes
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
Technical Details
Message-ID: <3gdptg2lfrnd.dlg@tyczka.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
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 Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: Roman Tyczka <noemail@because.no>
Newsgroups: pl.comp.lang.javascript
Subject: Re: Promise i oczekiwanie na wynik
Date: Fri, 10 Aug 2018 18:19:58 +0200
Organization: ATMAN - ATM S.A.
Lines: 47
Sender: romek@tyczka.no.found
Message-ID: <3gdptg2lfrnd.dlg@tyczka.com>
References: <1jv3988qj6pyf.dlg@tyczka.com> <nu2wq6mg704y$.wuh3wxwx318r$.dlg@40tude.net> <1x6oxswxeel0t$.dlg@tyczka.com> <19s5kvtfto3zr.bj8wdjlcy4l2.dlg@40tude.net> <pkk72b$2gvk$1@csiph.com>
NNTP-Posting-Host: ip-94-75-90-137.wave.com.pl
Mime-Version: 1.0
X-Trace: node1.news.atman.pl 1533917998 17343 94.75.90.137 (10 Aug 2018 16:19:58 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Fri, 10 Aug 2018 16:19:58 +0000 (UTC)
User-Agent: 40tude_Dialog/2.0.15.84
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit