abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 05:00 | Nová verze

    Byla vydána nová verze 26.6.25 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

    Ladislav Hagara | Komentářů: 0
    včera 14:44 | IT novinky

    Apple bez varování odstranil ze svého obchodu sociální síť VKontaktě i další aplikace skupiny VK, jako je VK Music nebo VK Video [Novinky.cz].

    Ladislav Hagara | Komentářů: 4
    včera 14:22 | IT novinky

    V dubnu loňského roku představený poštovní klient Notion Mail bude 22. září ukončen.

    Ladislav Hagara | Komentářů: 2
    včera 04:33 | Komunita

    Konference OpenAlt 2026 hledá přednášející. Proběhne o víkendu 7. a 8. listopadu na půdě Fakulty informačních technologií VUT v Brně. Témata konference jsou: Otevřený a svobodný software, IoT a Hnutí tvůrců, Vzdělávání, Bezpečnost a soukromí, Otevřená společnost, komunity a data, OpenMobility a další.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | IT novinky

    Společnosti OpenAI a Broadcom oznámily čip optimalizovaný pro AI pojmenovaný Jalapeño.

    Ladislav Hagara | Komentářů: 0
    25.6. 20:22 | Nová verze

    Deno (Wikipedie), běhové prostředí (runtime) pro JavaScript, TypeScript a WebAssembly, bylo vydáno v nové verzi 2.9. Hlavní novinkou je deno desktop pro převod Deno projektu na desktopovou aplikaci. Jedná se o alternativu k frameworkům Electron nebo Tauri.

    Ladislav Hagara | Komentářů: 2
    25.6. 15:44 | IT novinky

    Od zítra jsou Datové schránky oficiálně na nové adrese datovka.gov.cz. Adresa mojedatovaschranka.cz zůstává funkční do 27. srpna 2026, následně budou uživatelé automaticky přesměrováni na datovka.gov.cz.

    Ladislav Hagara | Komentářů: 3
    25.6. 13:44 | Nová verze

    Dolphin (Wikipedie), tj. open source multiplatformní emulátor herních konzolí GameCube a Wii od Nintenda, byl vydán ve verzi 2606. S podporou Game Boy Playeru.

    Ladislav Hagara | Komentářů: 0
    25.6. 11:11 | Zajímavý software

    Vasudeva Kamath představil utilitu debvulns, alternativu k nativní utilitě debsecan, pro výpis zranitelností v Debianu. Navíc má především možnost výstupu ve strukturovaných formátech JSON a CSV. V plánu je exportér pro Prometheus.

    Ladislav Hagara | Komentářů: 0
    24.6. 21:44 | IT novinky

    Oficiální český státní eshop s elektronickými dálničními známkami nově najdete na edalnice.gov.cz. Doména gov.cz jasně potvrzuje, že jste na oficiálním státním webu [𝕏].

    Ladislav Hagara | Komentářů: 27
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (17%)
     (31%)
     (3%)
     (6%)
     (2%)
     (15%)
     (26%)
    Celkem 1997 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: Javascript: odmítnutí slibu (promise rejection)

    24.2.2021 12:12 mica
    Javascript: odmítnutí slibu (promise rejection)
    Přečteno: 469×
    Zdravím, mám dotaz na sliby (promises) v Javascriptu a způsob jejich vypořádání.

    Konkrétně potřebuju provést několik po sobě jdoucích a přesně načasovaných operací, k čemuž jsem využil sliby zřetězené pomocí metody then(). Po provedení všech úkonů potřebuju provést ještě další funkci prostřednictvím metody finally(). Aby ta však přišla ke slovu, je nutné, aby všechny zřetězené sliby byly důsledně vypořádány čili zejména aby bylo ošetřeno jejích odmítnutí (rejection) - a na to právě směruje můj dotaz nebo vlastně dotazy dva.

    Jak je z ukázky vidět, splnění slibu je vázáno na určité podmínky (přítomnost prvku v dokumentu a jeho momentální poloha vůči viewportu) a když ty nejsou splněny, slib je odmítnut. Odmítnutí bych mohl zapsat zástupnou funkcí reject(), jak mám v komentáři, a vše by bylo bez problémů, ale když chci "vyhodit" vlastní výjimku ("throw"), na řádku 10 mi způsobí, že se mi do konzole vypíše, že výjimka nebyla zachycena ("uncaught"), a navíc se pak nevykoná funkce v metodě finally(); na řádku 15 nicméně zapsání výjimky zachyceno je. Proč tedy výjimka na řádku 10 není zachycena, kdežto na řádku 15 je?

    Druhý dotaz se týká způsobu konečného vypořádání odmítnutí slibu uvnitř metody catch(). Samozřejmě se nabízí console.log() nebo console.error(), ale já do konzole nic vypisovat nechci (proč by se tam mělo něco vypisovat, když byl slib odmítnut čistě proto, že v dokumentu není přítomen určitý prvek (element), jehož přítomnost je volitelná). Jak mám tedy prostřednictvím metody catch() vypořádat odmítnutí slibu tak, aby se nikde nic nevypisovalo?

    Doufám, že mé dotazy nejsou napsány nesrozumitelně.
    ...).then((val) => {
                    classReplace(...val);
                    return new Promise(function(resolve, reject) {
                        if (element) {
                            setTimeout(() => {
                                if (element.classList.contains("class1")) {
                                    if (element.getBoundingClientRect().top + 500 < screenHeight) {
                                        resolve([element, "class1", "class2"])
                                    } else {
    (řádek 10)                          throw("element out of viewport") // nebo: reject("element out of viewport")
                                    }
                                }
                            }, 800)
                        } else {
    (řádek 15)              throw("element absent") // nebo: reject("element absent")
                        }
    
                    })
                }).then(...)
                .catch(
                    error => {
                        console.log(error)
                    }).finally(...
    

    Odpovědi

    24.2.2021 20:28 nemam
    Rozbalit Rozbalit vše Re: Javascript: odmítnutí slibu (promise rejection)
    Vyjimka na radku 10 vyfajruje asynchronne, protoze je uvnitr setTimeout a ten je asynchornni.
    25.2.2021 14:33 mica
    Rozbalit Rozbalit vše Re: Javascript: odmítnutí slibu (promise rejection)
    Uvítal bych rozvedení, takhle stručně to stále nechápu. Díky.
    25.2.2021 21:10 kvr
    Rozbalit Rozbalit vše Re: Javascript: odmítnutí slibu (promise rejection)
    Tohle je funkce, která se předává do setTimeout() a která se pouští asynchronně, nezávisle na flow původní funkce:

    () => {
                                if (element.classList.contains("class1")) {
                                    if (element.getBoundingClientRect().top + 500 < screenHeight) {
                                        resolve([element, "class1", "class2"])
                                    } else {
    (řádek 10)                          throw("element out of viewport") // nebo: reject("element out of viewport")
                                    }
                                }
    

    Takže jakákoliv výjimka vypadne z téhle funkce, tak vybublá na console, bo ji nikdo nechytá. V době, kdy se tahle funkce pustí, je původní funkce pro Promise už dávno ukončená.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.