14 komentářů k článku Asynchronní JavaScript pod pokličkou aneb Eventloop v praxi:

  1. Doli

    Nepřesná formulace

    funkce setTimeout(…), která je asynchronní, takže se nečeká na její výsledek

    To není úplně dobrá formulace. Funkce setTimeout je synchronní a kód čeká na výsledek, konkrétně až vrátí timeoutID. Asynchronně se provede pouze funkce nebo kód, který ji předáme jako parametr.

  2. Jarda

    Nefunguje vám odkaz v této větě:

    Příklad blokujícího kódu najdete v tomto příkladu. Schválně si zkuste označit text.

    Vrací to 404

    1. Tomáš DusíkAutor příspěvku

      Re:
      Problém je pravděpodobně v tom, že jsfiddle maže kód, který se vykonává podezřele dlouho.
      Díky za info, upravíme.

  3. Starý Smrďa Rum

    await
    Jak je to s await. Když zavolám

    await NecoAsynchronniho();

    bude to v tomto případě blokovat?

  4. Radouch

    Díky za článek
    Občas mám pocit, že zde vycházejí články, jejichž cílem je ukázat, že autor je fakt mistr světa v dané problematice. U tohoto článku mám pocit, že je cílem danou problematiku vysvětlit, což se myslím podařilo.
    Díky, více takových!

  5. Ondřej Novák

    No ve skutečnosti se o ten synchronní kód stará sám procesor včetně zásobníku. Event loop do zásobníku počas běhu synchronního kódu nekouká, on prostě neběží, jen z druhé strany lze do něj vložit event. Je to jako poštovní schránka do které lze vložit příkaz (vykonání nějaké funkce) a když aktuální js vlákno dokončí co právě dělá (zpracovává jinou funkci) vrátí se ke schránce a vyzvedne si další příkaz. Pokud tam žádný není, tak tam aktivně čeká až tam nějaký padne

    Tomuto mechanismu se jinde říká dispatching, funkci která to obstarává dispatcher a operaci vložení do fronty dispatch. Ve Windows od prvních verzi to dělá oblíbená sekvence GetMessage TranslateMessage a DispatchMessage. Do fronty se příkazy vkládají přes PostMessage a SendMessage.

    Dispatching v jiných jazycích není, ale dá se ho dodělat. Jen se špatně píši knihovny které s ním počítají. Například já mám též v C++ knihovnu která definuje funkci dispatch() a pak funkci runDispatcher která po vzoru JS dělá onen zmíněný eventloop.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=20844