NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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.

Aktivity
Avatar
Ondřej Jašek:16.6.2017 14:16

Zdravím,

si udělat skript aby mi každých 15 sekund stránka odeslala request na server, zkontroloval změnu kurzu a v přiapdě že dosáhne toho co si zadám aby mě upozornila, nějaké nápady jak na to ??

 
Odpovědět
16.6.2017 14:16
Avatar
Odpovídá na Ondřej Jašek
Petr Štechmüller:16.6.2017 14:20

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);
Nahoru Odpovědět
16.6.2017 14:20
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Ondřej Jašek:16.6.2017 14:29

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

  • tak tady v tom už nemám úplně jasno, jak na to
 
Nahoru Odpovědět
16.6.2017 14:29
Avatar
Odpovídá na Ondřej Jašek
Petr Štechmüller:16.6.2017 14:45

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...

Nahoru Odpovědět
16.6.2017 14:45
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Odpovídá na Petr Štechmüller
Marian Benčat:16.6.2017 15:38

lepší bude setInterval, pokud se to má opakovat.
SetInterval W3C

Nahoru Odpovědět
16.6.2017 15:38
Totalitní admini..
Avatar
Ondřej Jašek:16.6.2017 15:52

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.

 
Nahoru Odpovědět
16.6.2017 15:52
Avatar
Odpovídá na Ondřej Jašek
Petr Štechmüller:16.6.2017 16:02

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:

  1. V JS načíst obsah z adresy: https://poloniex.com/public?…
  2. Obsah je v JSON formátu, takže parsování obstará JS
  3. Vyhledáš potřebné informace o ceně (minimum, maximum)
  4. Pokud bude potřeba vyhodíš notifikaci
Nahoru Odpovědět
16.6.2017 16:02
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Odpovídá na Petr Štechmüller
Marian Benčat:16.6.2017 16:17
  1. Proč by nemohl použít setInterval?
  2. NodeJS, oh bože :D Jako proč? JSON umí číst všechny jazyky světa.. Někomu doporučovat javascript na serveru, by mělo být považováno za kyberterorismus...

Tímto ztrácím zájem o tom diskutovat.

Nahoru Odpovědět
16.6.2017 16:17
Totalitní admini..
Avatar
Odpovídá na Marian Benčat
Petr Štechmüller:16.6.2017 16:23

Klid, já jen reagoval na to, co píšou v dokumentaci -> pokud to bude spamovat tím intervalem, tak ho zabnanují...

Nahoru Odpovědět
16.6.2017 16:23
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Ondřej Jašek:16.6.2017 16:36

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 ?

 
Nahoru Odpovědět
16.6.2017 16:36
Avatar
Ondřej Jašek:16.6.2017 16:41

Popřípadě jak načíst ten obsah z adresy ? Mohlo by se to udělat i přes PHP json_decode()

 
Nahoru Odpovědět
16.6.2017 16:41
Avatar
Odpovídá na Ondřej Jašek
Wal De Mar-Lad:17.6.2017 18:35

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.

Nahoru Odpovědět
17.6.2017 18:35
Libraries over frameworks...
Avatar
Marian Benčat:18.6.2017 10:22

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,

Nahoru Odpovědět
18.6.2017 10:22
Totalitní admini..
Avatar
Wal De Mar-Lad:18.6.2017 15:16

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 :)

Nahoru Odpovědět
18.6.2017 15:16
Libraries over frameworks...
Avatar
Odpovídá na Wal De Mar-Lad
Neaktivní uživatel:18.6.2017 15:30

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.

Zdroje: http://javascript.info/…-setinterval

Nahoru Odpovědět
18.6.2017 15:30
Neaktivní uživatelský účet
Avatar
Wal De Mar-Lad:18.6.2017 15:37

Á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.

Nahoru Odpovědět
18.6.2017 15:37
Libraries over frameworks...
Avatar
Odpovídá na Wal De Mar-Lad
Neaktivní uživatel:18.6.2017 16:00

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?

Nahoru Odpovědět
18.6.2017 16:00
Neaktivní uživatelský účet
Avatar
Wal De Mar-Lad:18.6.2017 16:15

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.

Nahoru Odpovědět
18.6.2017 16:15
Libraries over frameworks...
Avatar
Odpovídá na Wal De Mar-Lad
Neaktivní uživatel:18.6.2017 17:21

V horizontu 7 let chapu opatrnost.

Nahoru Odpovědět
18.6.2017 17:21
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 20 zpráv z 20.