Diskuze: JAVASCRIPT - ODESILÁNÍ REQUESTU PO URČITÉ DOBĚ
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 20 zpráv z 20.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
V Javascriptu je funkce setTimeout, která přijímá dva parametry. 1. parametr je funkce, která se vyvolá a 2. parametr je prodleva v milisekundách. Celý kód může vypadat nějak takto:
setTimeout(function() {
// Sem napíšeš, co se má stát každých 15 vteřin...
}, 15000);
Jojo, to vím, akorát mi jde o to co se má stát každých 15 vteřin, aby
to v API veřejné burzy zkontrolovalo kurz
a pokud se bude rovnat určité hodnotě vyhodilo alert nejlépe i se zvukem
Nejdříve si vyzkoušej to API samostatně, tedy získat požadovaný kurz.
Když to budeš mít, tak to dej do toho setTimeout a na notifikace má
prohlížeč vlastní API.
Když mi pošleš o jaké API se jedná, třeba něco vymyslím...
lepší bude setInterval, pokud se to má opakovat.
SetInterval W3C
taky mě spíše napadlo setInterval, ale jak to do toho intervalu nasadit
aby to komunikovalo s tou api
nemám s tím zkušenosti zatím, takže si nevím rady
API : https://poloniex.com/support/api/
cíl : hlídat dle aktuální ceny minimum a maximum co si zadám. Pokud cena dosáhne jedné z hodnot hodí to notifikaci.
Přečetl jsi si tu dokumentaci trochu?
Please note that making more than 6 calls per second to the public API, or repeatedly and needlessly fetching excessive amounts of data, can result in your IP being banned.
Stále to chceš implementovat pomocí setInterval? Nebylo by lepší použít NodeJS?
Co jsem vyčetl z API, tak bude stačit toto:
Tímto ztrácím zájem o tom diskutovat.
Klid, já jen reagoval na to, co píšou v dokumentaci -> pokud to bude spamovat tím intervalem, tak ho zabnanují...
tak může se to odesílat po delší době, aby mě nezabanovali
ale spíš pomohl by mi někdo s tím vytvořením toho intervalu popřípadě s
nějakým řešením ?
Popřípadě jak načíst ten obsah z adresy ? Mohlo by se to udělat i přes PHP json_decode()
Nepoužil by som setInterval(), ale predsalen setTimeout(), zaobalený do nejakej funkcie ktorá bude rekurzívne volať samu seba. To poprvé. Po druhé, nevolal by som to API zo stránky, ale predsalen zo servera a keď bude dôvod na alert, nech server pushne do stránky príslušný alert cez websocket. To len napríklad. A áno, na takéto - vcelku bežné riešenie - je Node.js ako server a nie Apache + PHP.
Proč by neměl použít interval? Radit v principu neukončenou rekurzi je naprosto padlé na hlavu a je úplně jedno, že z pointy, z jaké pofidérní javascript funguje, to nikdy nespande na stack overflow.
Pokud ale chápu správně vaši pointu, tak vám jde o to, aby znovu volal server například až po ukončení zpracování předešlého responsu? Pak by měl setTimeout() smysl,
Používanie rekurzívneho volania setTimeout miesto jeden krát setInterval je jeden zo starších trikov v JS aby sa vo fronte udalostí nehromadili požiadavky na volanie setInterval callbacku, ak obsluhu fronty zdrží callback nejakej inej udalosti, čo sa bežne stáva, keďže celý proces je jednovláknový. Ikeď pripúšťam, že možno je to len taký zvyk z mojej strany a zafungoval by bez problémov aj setInterval. Za tou radou proste stála myšlienka, že ak niečo môj server zdrží a nahromadí sa mi vo fronte niekoľko volaní callbacku v ktorom si pýtam údaje z iného serveru, tak nech sa ani omylom nestane, že môj server potom ten callback odpáli niekoľko krát po sebe v takom tempe, že ma ten druhý server zablokuje, lebo je tam pravidlo max. X volaní do sekundy. S rekurzívnym setTimeout sa také niečo zaručene nestane. AVŠAK ... možno som len zbytočne paranoidný a nestane sa to ani so setInterval, lebo interná implementácia sa dávno zmenila. Proste som odpovedal podľa svojho najlepšieho vedomia a svedomia
Tvuj zamer je v poradku, jenze nemas uplne spravne informace.
setInterval() volani nehromadi do nekonecna, misto toho, pokud dojde k tomu, ze
je vyvolan 3. callback jeste pred tim, nez je dokoncen 1. (tedy 2. callback
stoji ve fronte) - tento (3.) callback je zahozen, proto jeho pouziti tady vubec
nevadi.
Áno, ako som spomenul, je to možné, až pravdepodobné. A zdá sa dokonca, že je to isté. Ale ... mne sa ten paranoidný prístup osvedčil. A až sa dožijem dňa, že všetky prehliadače implementujú všetky špecifikácie rovnako, resp. ak ostane iba jedno jadro nad ktorým budú všetci stavať svoje prehliadače, potom od toho zvyku upustím.
Do as you wish. Ja jen upresnuju informace pro budouci ctenare. Kdyby si snad v budoucnu nekdo cetl tahle vlakna, bude mit snazsi cestu k informacim
Jen tak ze zvedavosti - jak dlouho pracujes s JSkem?
Presne neviem... S HTML asi 15 rokov a s JS asi 7 rokov? Ak však máš na mysli vyslovene aktívne, tak aktívne, že všetko okolo JS a jQuery skúmam do hĺbky, tak to posledného 2.5 roka, plus Node.js posledného 3/4 roka.
Zobrazeno 20 zpráv z 20.