Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

JS promise a spol

node
verified
rating uzivatele
(5 hodnocení)
24. 8. 2020 19:55:29
Moja neznalost moderneho js ma blokuje momentalne v jednej veci takze si idem po radu.
O co ide:
mam url adresu ktora streamuje cisla. ide o chunked transfer-encoding, inak povedane server neusale posiela nove data na jednom spojeni a kazdu spravu oddeluje novym riadkom. Prakticky nieco ako server sent events. Kazdy riadok je jedno sekvencne id(povodne som pouzil jsonl ale nemam dost dat ktore potrebujem posielat takze len cislo). Server posle id ked je obsah pre toto id dostupny na servery, preto klient musi cakat na toto id, aby nedostal 404, i ked vie ze dalsie id je vzdy +1 od predosleho.
toto si spracovat viem. teraz problem je ze ja potrebujem zobrat toto id a zavolat url v ktorej toto id pouzijem a stiahnut obsah z tejto url a natiahnut ho do array bufferu a ten ulozit do zoradeneho pola. cize nieco ako:
v tomto pripade ide o dva promisy na ktore musim cakat(response a array buffer). teraz ide o to ze to pushovanie do foo musi byt sekvencne. cize ked mne pride id 1, 2, 3 a ja ich "fetchnem" tak do foo sa mi mozu dostat v roznom poradi kedze kazda url moze trvat iny cas nez sa nacita/stiahne.
takze otazka je, ako stahovat url hned ako mi pride id-cko ale zaroven ako vrateny obsah ulozit sekvencne?
rozmyslal som ulozit do toho pola tie promisy priamo, cim sa zachova poradie, a potom len cez nejaku slucku riesit foo.shift() a ten promisresolvnut, lenze to je stale asynchronne a js mi to len tak nedovoli blokovat kym ten promis nevrati co ma takze preto sa pytam ze ako na to.
24. 8. 2020 19:55:29
https://webtrh.cz/diskuse/js-promise-a-spol/#reply1461113
hm
verified
rating uzivatele
(20 hodnocení)
24. 8. 2020 21:13:32
Nenapada me rychle nic jinyho nez zchovat ty puvodni idcka az do ulozeni, takze ukladat do objektu foo = buf;
pokud z toho pak potrebujes jako vystup serazeny array tak Object.keys(foo).sort().map((key)=>foo); ale zalezi jak moc dat budes drzet, aby to nedelalo naky vykonovy silenosti, to si vyzkousej :) to asynchronni programovani to obcas nekdy zkomplikuje no
Samozrejme pokud ty idcka nejsou vzestupny tak jsi uplne v haji :)) to aby sis k tomu jeste pridal mapu v jakym poradi prisli a serazoval podle ni.
24. 8. 2020 21:13:32
https://webtrh.cz/diskuse/js-promise-a-spol/#reply1461112
Pro odpověď se přihlašte.
Přihlásit