Zavolání funkce pokud neběží AJAX request

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Landsman
Člen | 152
+
0
-

Ahoj,

mám jednu funkci, která by mi měla po nějakém časem updatovat určitá data do DB a napadlo mě, že by se snadno mohli potkat 2 ajax requesty. Tj. 1. uživatelův a 2. ten automatický.

Dá se nějak ověřit, že právě neprobíhá jakýkoliv ajax request, aniž bych do všech funkcí musel přidávat nějaký vlastní var state?

dík

CZechBoY
Člen | 3608
+
0
-

Proc to neudelat treba pres zamek souboru?

Landsman
Člen | 152
+
0
-

CZechBoY napsal(a):

Proc to neudelat treba pres zamek souboru?

Jo proč ne, ale lze detekovat zavolání všech „handle…“ + dokončení komplexně?

Editoval Landsman (29. 8. 2016 12:47)

CZechBoY
Člen | 3608
+
0
-

Spíš je otázka proč zrovna ajax request?
Ty chceš obalit volání nějaký jedný funkce aby proběhla jen jednou za třeba 10 minut. Já to řeším tak, že použiju nette cache a nastavím expiraci 10 minut.

Michal Hlávka
Člen | 190
+
0
-

@CZechBoY já si myslím, že jste se nepochopili. On je nucený dělat ajax request, pro pohodlí klienta. A jelikož chce data aktualizovat, tak tam má nějakej delay. Ale zároveň se může stát, že tu aktualizaci spustí sám klient nějakou funkcí, kterou má. A nechce vytvořit zbytečně ajax request dvakrát do sekundy. Je už jedno, jestli mu to nic nesežere z výkonu nebo jo. Z puntičkářského hlediska by se tohle stát nemělo a já ho chápu.

@Landsman tvůj problém vyřeší takhle diskuze. http://stackoverflow.com/…ive-function

Editoval emptywall (29. 8. 2016 13:35)

CZechBoY
Člen | 3608
+
0
-

@emptywall jo, to jsem si taky myslel.. nicméně ta backend cache to pořeší (zamkne soubor a počká), otázka je jak se zachovat na frontendu (počkat na dokončení requestu a až potom spustit další odpočet pro další request nebo prostě házet refresh každých 10s bez ohledu na dobu trvání odpovědi serveru atd.).

Michal Hlávka
Člen | 190
+
0
-

@CZechBoY on backend vůbec řešit nepotřebuje, jinak by se to samozřejmě řešilo jak píšeš. Já bych to udělal tak, že automatický refresh, by se podíval, jestli není teď nějaký aktivní dotaz posílán na server. Pokud ano, resetuju delay a request ani neprovedu. Takže mě čeká dalších 10 minut. Pokud request proběhne manuálne ze strany klienta, tak zároveň delay startem requestu znova resetuje.

Landsman
Člen | 152
+
0
-

@emptywall To vypadá dobře!