# Állapot-parancsikonok: INC, TOGGLE, NUL, UPDATE, UNWATCH, WAIT, BLOCKED és CACHEPATH

> Kis függvények, amelyek az állapot egy értékét az útvonala alapján módosítják vagy figyelik, megvárják, amíg egy érték létezik, valamit csak egyszer futtatnak egy időszakban, és az állapot egy értékét a gyorsítótárban tartják.

Framework: jcomponent20
Product: jComponent 20 (jcomponent@20)
Language: hu
Content-SHA256: 79e91177342beb5a7ee886c1989f866a601af53bf5a3b105fc7fd2ec6de8377b
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: jcomponent20@3fedd009a277f50fddc608b97afbec553b67c51b
Review: not-recorded

Ezek a függvények a jComponent állapotával dolgoznak **útvonal** (`'user.visits'`) szerint, mint a `SET()` és a `GET()`, és mindegyik értesíti az útvonal komponenseit és megfigyelőit.

- Az `INC(path, [value])` hozzáadja a `value` értéket (alapértelmezés `1`) egy számhoz; ha az érték üres, `0`-ról indul, ha szöveg, előbb számként olvassa be.
- A `TOGGLE(path)` megváltoztat egy booleant (az üres érték `true` lesz). A `NUL(path)` és az `NULL(path)` álneve `null` értékre állítja.
- Az `UPDATE(path)` (álnév `UPD`) értesít mindenkit, aki az útvonalat használja, **az érték megváltoztatása nélkül**: használd, miután egy objektumot vagy tömböt helyben módosítottál.
- Az `UNWATCH(path, [fn])` eltávolítja az útvonal `WATCH()` hívással létrehozott megfigyelőit; `fn` esetén csak azt az egyet.
- A `WAIT(fn or path, callback)` lefuttatja a `callback` függvényt, amint a függvény igaz értéket ad vissza, vagy az útvonalnak van értéke. Azonnal ellenőriz, majd **500 ms-onként**.
- A `BLOCKED(key, timeout, [callback])` először `false` értéket ad, majd a következő `timeout` ms-ig `true` értéket (a `'5 seconds'` is működik): védelem a dupla kattintás vagy az ismételt kérés ellen. A `callback` csak akkor fut, ha nincs blokkolva.
- A `CACHEPATH(path, expire, [default])` az állapot egy értékét a gyorsítótárban (`CACHE()`) tartja: az útvonalat a gyorsítótárazott értékre állítja, ha van (vagy a `default` értékre, amely lehet függvény), és minden változást a `path_<path>` kulcs alatt ment.
- Az útvonal az oldal állapotában lévő útvonal, így egy olyan név, mint a `name` vagy a `location`, a `window` tulajdonsága: használj saját neveket (`person`, `prefs.mode`).
- A `setTimeout2(id, fn, ms, [limit], [param])` egy debounce-olt `setTimeout()`: ugyanazzal az `id` értékkel újra hívva újraindítja az időzítőt, így az `fn` egyszer fut le, az utolsó hívás után `ms`-sel. `limit` esetén az időzítő legfeljebb ennyiszer indul újra, és a következő hívások figyelmen kívül maradnak, amíg az `fn` le nem futott, így a hívások folyama nem halaszthatja örökre. A `clearTimeout2(id)` megszünteti, és `true` értéket ad, ha volt ilyen.
- A `CLONE(value)` mély másolatot készít (a dátumok dátumok maradnak), a `COPY(from, to)` mélyen átmásolja az egyik objektum tulajdonságait a másikba, és `to` értéket ad vissza. A `NOOP` egy semmit sem csináló függvény, a `WARN(...)` pedig a `console.warn` felületre ír.

```html public/index.html
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title>jComponent</title>
	<link rel="stylesheet" href="//cdn.componentator.com/spa.min@20.css" />
	<script src="//cdn.componentator.com/spa.min@20.js"></script>
</head>
<body>
	<p class="out"></p>
	<script>

		window.sample = { watched: 0 };

	</script>
</body>
</html>
```
