@dxtmisha/wiki 0.39.6 → 0.39.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/defineProperty-Bjg6wMoX.js +39 -0
- package/dist/library.d.ts +0 -1
- package/dist/library.js +25 -25
- package/dist/media.js +12 -0
- package/dist/storybook.js +26929 -11
- package/package.json +1 -1
- package/src/library.ts +0 -1
- package/src/media/functional/functional-basic/api/api.en.mdx +45 -0
- package/src/media/functional/functional-basic/api/api.ru.mdx +45 -0
- package/src/media/functional/functional-basic/api/api.vi.mdx +45 -0
- package/src/media/functional/functional-basic/classes/Api/Api.en.mdx +54 -54
- package/src/media/functional/functional-basic/classes/Api/Api.ru.mdx +54 -54
- package/src/media/functional/functional-basic/classes/Api/Api.vi.mdx +54 -54
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.en.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.ru.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.vi.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.en.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.ru.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.vi.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.en.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.ru.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.vi.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.en.mdx +28 -14
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.ru.mdx +33 -19
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.vi.mdx +33 -19
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.en.mdx +56 -0
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.ru.mdx +56 -0
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.vi.mdx +55 -0
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.en.mdx +101 -49
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.ru.mdx +101 -49
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.vi.mdx +98 -47
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.en.mdx +44 -26
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.ru.mdx +45 -27
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.vi.mdx +44 -26
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.en.mdx +50 -21
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.ru.mdx +54 -25
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.vi.mdx +55 -26
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.en.mdx +29 -32
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.ru.mdx +33 -36
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.vi.mdx +33 -36
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.en.mdx +34 -53
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.ru.mdx +33 -52
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.vi.mdx +39 -58
- package/src/media/functional/functional-basic/classes/Cache/Cache.en.mdx +7 -4
- package/src/media/functional/functional-basic/classes/Cache/Cache.ru.mdx +7 -4
- package/src/media/functional/functional-basic/classes/Cache/Cache.vi.mdx +28 -25
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.en.mdx +45 -53
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.ru.mdx +46 -54
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.vi.mdx +47 -55
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.en.mdx +13 -1
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.ru.mdx +13 -1
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.vi.mdx +13 -0
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.en.mdx +88 -44
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.ru.mdx +88 -44
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.vi.mdx +85 -41
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.en.mdx +43 -22
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.ru.mdx +46 -25
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.vi.mdx +43 -22
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.en.mdx +84 -0
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.ru.mdx +84 -0
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.vi.mdx +100 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.en.mdx +153 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.ru.mdx +153 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.vi.mdx +153 -0
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.en.mdx +32 -25
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.ru.mdx +32 -25
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.vi.mdx +32 -27
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.en.mdx +36 -4
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.ru.mdx +36 -4
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.vi.mdx +36 -4
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.en.mdx +101 -70
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.ru.mdx +100 -69
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.vi.mdx +101 -70
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.en.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.ru.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.vi.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.en.mdx +44 -96
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.ru.mdx +44 -96
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.vi.mdx +44 -96
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.en.mdx +49 -28
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.ru.mdx +21 -0
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.vi.mdx +63 -42
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.en.mdx +97 -109
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.ru.mdx +86 -98
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.vi.mdx +99 -111
- package/src/media/functional/functional-basic/classes/Geo/Geo.en.mdx +3 -3
- package/src/media/functional/functional-basic/classes/Geo/Geo.ru.mdx +5 -5
- package/src/media/functional/functional-basic/classes/Geo/Geo.vi.mdx +5 -5
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.en.mdx +83 -40
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.ru.mdx +83 -40
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.vi.mdx +87 -44
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.en.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.ru.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.vi.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.en.mdx +56 -105
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.ru.mdx +53 -102
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.vi.mdx +55 -105
- package/src/media/functional/functional-basic/classes/Hash/Hash.en.mdx +18 -7
- package/src/media/functional/functional-basic/classes/Hash/Hash.ru.mdx +18 -7
- package/src/media/functional/functional-basic/classes/Hash/Hash.vi.mdx +18 -7
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.en.mdx +54 -0
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.ru.mdx +54 -0
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.vi.mdx +54 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.en.mdx +78 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.ru.mdx +78 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.vi.mdx +78 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.en.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.ru.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.vi.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.en.mdx +131 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.ru.mdx +131 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.vi.mdx +131 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.en.mdx +97 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.ru.mdx +97 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.vi.mdx +97 -0
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.en.mdx +13 -5
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.ru.mdx +13 -5
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.vi.mdx +13 -5
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.en.mdx +37 -19
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.ru.mdx +37 -19
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.vi.mdx +35 -17
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.en.mdx +31 -19
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.ru.mdx +31 -19
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.vi.mdx +32 -20
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.en.mdx +29 -15
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.ru.mdx +28 -14
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.vi.mdx +28 -14
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.en.mdx +7 -3
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.ru.mdx +7 -3
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.vi.mdx +7 -3
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.en.mdx +17 -13
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.ru.mdx +17 -13
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.vi.mdx +17 -13
- package/src/media/functional/functional-basic/functions/createElement/createElement.en.mdx +2 -0
- package/src/media/functional/functional-basic/functions/createElement/createElement.ru.mdx +2 -0
- package/src/media/functional/functional-basic/functions/createElement/createElement.vi.mdx +2 -0
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.en.mdx +1 -3
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.ru.mdx +1 -3
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.vi.mdx +1 -3
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.en.mdx +13 -10
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.ru.mdx +14 -11
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.vi.mdx +12 -9
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.en.mdx +14 -13
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.ru.mdx +15 -14
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.vi.mdx +14 -13
- package/src/media/functional/functional-basic/functions/forEach/forEach.en.mdx +1 -1
- package/src/media/functional/functional-basic/functions/forEach/forEach.ru.mdx +1 -1
- package/src/media/functional/functional-basic/functions/forEach/forEach.vi.mdx +1 -1
- package/src/media/functional/functional-basic/functions/frame/frame.en.mdx +7 -4
- package/src/media/functional/functional-basic/functions/frame/frame.ru.mdx +6 -3
- package/src/media/functional/functional-basic/functions/frame/frame.vi.mdx +7 -4
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.en.mdx +34 -0
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.ru.mdx +34 -0
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.vi.mdx +35 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.en.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.ru.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.vi.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.en.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.ru.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.vi.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.en.mdx +17 -3
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.ru.mdx +17 -3
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.vi.mdx +18 -4
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.en.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.ru.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.vi.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.en.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.ru.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.vi.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.en.mdx +11 -4
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.ru.mdx +14 -7
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.vi.mdx +13 -6
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.en.mdx +3 -2
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.ru.mdx +3 -2
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.vi.mdx +3 -2
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.en.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.ru.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.vi.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toString/toString.en.mdx +28 -0
- package/src/media/functional/functional-basic/functions/toString/toString.ru.mdx +28 -0
- package/src/media/functional/functional-basic/functions/toString/toString.vi.mdx +28 -0
- package/src/media/functional/ui/about/about.en.mdx +45 -0
- package/src/media/functional/ui/about/about.ru.mdx +45 -0
- package/src/media/functional/ui/about/about.vi.mdx +45 -0
- package/src/media/functional/ui/component/component.en.mdx +104 -0
- package/src/media/functional/ui/component/component.ru.mdx +106 -0
- package/src/media/functional/ui/component/component.vi.mdx +104 -0
- package/src/media/functional/ui/setup/setup.en.mdx +72 -0
- package/src/media/functional/ui/setup/setup.ru.mdx +72 -0
- package/src/media/functional/ui/setup/setup.vi.mdx +72 -0
- package/src/media/functional/ui/wiki-data.en.mdx +114 -0
- package/src/media/functional/ui/wiki-data.ru.mdx +114 -0
- package/src/media/functional/ui/wiki-data.vi.mdx +114 -0
- package/dist/WikiStorybookDescriptions-IKMchHA-.js +0 -26959
|
@@ -1,94 +1,86 @@
|
|
|
1
1
|
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
2
|
|
|
3
|
-
<Meta title='@dxtmisha/en/functional-basic/Classes/CacheItem - Cache
|
|
3
|
+
<Meta title='@dxtmisha/en/functional-basic/Classes/CacheItem - Advanced Cache Management'/>
|
|
4
4
|
|
|
5
5
|
# CacheItem Class
|
|
6
6
|
|
|
7
|
+
> **⚠️ Deprecated** — This class is obsolete and should not be used. / Этот класс устарел и не рекомендуется к использованию.
|
|
8
|
+
|
|
7
9
|
The internal engine driving individual cache entries. While `Cache` and `CacheStatic` provide the public interfaces for retrieving cached data across your application, it is the `CacheItem` class that securely manages the lifecycle, storage, and invalidation rules for each specific value.
|
|
8
10
|
|
|
11
|
+
> `CacheItem` is an **auxiliary class**, designed for internal management of individual cache entries. In most cases, it is recommended to interact with caching through the `Cache` or `CacheStatic` classes.
|
|
12
|
+
|
|
9
13
|
## Key Features
|
|
10
14
|
|
|
11
|
-
- **Dependency Tracking** — maintains
|
|
12
|
-
- **Lazy Evaluation** —
|
|
13
|
-
- **Historical Memory** — keeps a reference to the previously cached value (`getCacheOld`) even after recalculation
|
|
14
|
-
- **Async
|
|
15
|
+
- **Dependency Tracking** — maintains comparison arrays used to determine if a cached value remains valid.
|
|
16
|
+
- **Lazy Evaluation** — ensures the expensive callback function only runs when dependencies have changed.
|
|
17
|
+
- **Historical Memory** — keeps a reference to the previously cached value (`getCacheOld`) even after a recalculation occurs.
|
|
18
|
+
- **Async Support** — natively handles both synchronous (`getCache`) and `Promise`-based asynchronous (`getCacheAsync`) data loading.
|
|
19
|
+
- **Strict Invalidation** — uses deep comparison logic to trigger updates only when necessary.
|
|
15
20
|
|
|
21
|
+
## Initialization
|
|
16
22
|
|
|
17
|
-
|
|
23
|
+
As an auxiliary component, `CacheItem` is usually instantiated by higher-level managers. However, it can be created manually if custom, isolated caching logic is required.
|
|
18
24
|
|
|
19
|
-
|
|
25
|
+
### Generic Constraints
|
|
20
26
|
|
|
21
|
-
|
|
27
|
+
The class supports the following generic to ensure strict typing of the cached value:
|
|
28
|
+
- `T` — The type of the value being cached.
|
|
22
29
|
|
|
23
30
|
**Parameters:**
|
|
24
|
-
- `callback: () => T` — a function that will generate data for the cache.
|
|
31
|
+
- `callback: () => T` — a function that will generate or fetch data for the cache.
|
|
25
32
|
|
|
26
33
|
```typescript
|
|
27
|
-
import { CacheItem } from '@dxtmisha/functional'
|
|
34
|
+
import { CacheItem } from '@dxtmisha/functional-basic'
|
|
28
35
|
|
|
29
36
|
// 1. Initialization with a data retrieval function
|
|
30
37
|
const userCache = new CacheItem(() => fetchUserData())
|
|
38
|
+
|
|
39
|
+
// 2. Using generics for strict typing
|
|
40
|
+
const numberCache = new CacheItem<number>(() => Math.random())
|
|
31
41
|
```
|
|
32
42
|
|
|
33
|
-
##
|
|
43
|
+
## Methods
|
|
34
44
|
|
|
35
|
-
###
|
|
45
|
+
### Cache Access
|
|
36
46
|
|
|
37
|
-
|
|
47
|
+
- `getCache(comparison?: any[]): T` — Retrieves the value from the cache. If the comparison dependencies have changed, it triggers a recalculation.
|
|
48
|
+
- `getCacheAsync(comparison?: any[]): Promise<T>` — Asynchronous version of `getCache`. Returns a Promise that resolves to the cached or newly fetched data.
|
|
38
49
|
|
|
39
|
-
|
|
40
|
-
- `comparison?: any[]` — array of dependencies. If they change, the callback is re-evaluated.
|
|
50
|
+
### History
|
|
41
51
|
|
|
42
|
-
|
|
52
|
+
- `getCacheOld(): T | undefined` — Returns the value that was stored in the cache immediately prior to the last update.
|
|
43
53
|
|
|
54
|
+
## Examples
|
|
55
|
+
|
|
56
|
+
### Dependency-Based Invalidation
|
|
44
57
|
```javascript
|
|
45
58
|
let count = 0
|
|
46
59
|
const counterCache = new CacheItem(() => ++count)
|
|
47
60
|
|
|
48
|
-
//
|
|
49
|
-
counterCache.getCache([
|
|
50
|
-
|
|
51
|
-
// Returns cached 1 (dependencies match)
|
|
52
|
-
counterCache.getCache([1])
|
|
53
|
-
|
|
54
|
-
// Dependencies changed to [2], evaluates and caches 2
|
|
55
|
-
counterCache.getCache([2])
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### `getCacheAsync`
|
|
61
|
+
// First call: evaluates and caches 1
|
|
62
|
+
counterCache.getCache([10]) // returns 1
|
|
59
63
|
|
|
60
|
-
|
|
64
|
+
// Second call: dependencies match [10], returns cached 1
|
|
65
|
+
counterCache.getCache([10]) // returns 1
|
|
61
66
|
|
|
62
|
-
|
|
63
|
-
|
|
67
|
+
// Third call: dependencies changed to [20], evaluates and caches 2
|
|
68
|
+
counterCache.getCache([20]) // returns 2
|
|
64
69
|
|
|
65
|
-
|
|
70
|
+
// Check history:
|
|
71
|
+
console.log(counterCache.getCacheOld()) // returns 1
|
|
72
|
+
```
|
|
66
73
|
|
|
74
|
+
### Async API Caching
|
|
67
75
|
```javascript
|
|
68
|
-
const apiCache = new CacheItem(async () =>
|
|
76
|
+
const apiCache = new CacheItem(async () => {
|
|
77
|
+
const response = await fetch('/api/data')
|
|
78
|
+
return response.json()
|
|
79
|
+
})
|
|
69
80
|
|
|
70
|
-
// Fetches from the network
|
|
81
|
+
// Fetches from the network for the first 'v1' request
|
|
71
82
|
const data1 = await apiCache.getCacheAsync(['v1'])
|
|
72
83
|
|
|
73
|
-
// Returns from cache instantly
|
|
84
|
+
// Returns from cache instantly for subsequent 'v1' requests
|
|
74
85
|
const data2 = await apiCache.getCacheAsync(['v1'])
|
|
75
86
|
```
|
|
76
|
-
|
|
77
|
-
## Historical Data
|
|
78
|
-
|
|
79
|
-
### `getCacheOld`
|
|
80
|
-
|
|
81
|
-
If a cache invalidation occurs and new data is fetched, you can retrieve the immediate prior value using `getCacheOld()`.
|
|
82
|
-
|
|
83
|
-
**Returns:** `T | undefined` — the previously cached data, if available.
|
|
84
|
-
|
|
85
|
-
```javascript
|
|
86
|
-
counterCache.getCache([1]) // Returns 1
|
|
87
|
-
counterCache.getCache([2]) // Returns 2
|
|
88
|
-
|
|
89
|
-
console.log(counterCache.getCacheOld()) // Returns 1
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Internal Overview
|
|
93
|
-
|
|
94
|
-
`CacheItem` relies on the internal `isUpdate` method to strictly compare the incoming `comparison` array against the previous one. If they differ in length or strict equality (`===`) of their elements, the cache is flagged as stale and the internal `value` is regenerated.
|
|
@@ -1,94 +1,86 @@
|
|
|
1
1
|
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
2
|
|
|
3
|
-
<Meta title='@dxtmisha/ru/functional-basic/Classes/CacheItem - Управление
|
|
3
|
+
<Meta title='@dxtmisha/ru/functional-basic/Classes/CacheItem - Продвинутое Управление Кэшем'/>
|
|
4
4
|
|
|
5
5
|
# Класс CacheItem
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
> **⚠️ Устарел** — Этот класс устарел и не рекомендуется к использованию.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Внутренний механизм, управляющий отдельными записями кэша. В то время как `Cache` и `CacheStatic` предоставляют публичные интерфейсы для работы с глобальным кэшем приложения, именно класс `CacheItem` отвечает за жизненный цикл, хранение и правила инвалидации каждого конкретного значения.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
- **Ленивые вычисления** — гарантирует, что ресурсоемкая функция обратного вызова (callback) запускается только тогда, когда это абсолютно необходимо.
|
|
13
|
-
- **Историческая память** — сохраняет ссылку на ранее кэшированное значение (`getCacheOld`) даже после пересчета.
|
|
14
|
-
- **Асинхронное выполнение** — нативно обрабатывает как синхронную (`getCache`), так и асинхронную загрузку данных на основе `Promise` (`getCacheAsync`).
|
|
11
|
+
> `CacheItem` является **вспомогательным классом**, предназначенным для внутреннего управления отдельными записями кэша. В большинстве случаев рекомендуется взаимодействовать с кэшированием через классы `Cache` или `CacheStatic`.
|
|
15
12
|
|
|
13
|
+
## Ключевые особенности
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
- **Отслеживание зависимостей** — поддерживает массивы сравнения для определения актуальности закэшированного значения.
|
|
16
|
+
- **Ленивые вычисления** — гарантирует, что ресурсоемкая функция (callback) запускается только при изменении зависимостей.
|
|
17
|
+
- **Историческая память** — сохраняет ссылку на предыдущее значение (`getCacheOld`) даже после обновления кэша.
|
|
18
|
+
- **Асинхронная поддержка** — нативная работа как с синхронными (`getCache`), так и с асинхронными (`getCacheAsync`) данными.
|
|
19
|
+
- **Строгая инвалидация** — использует логику глубокого сравнения для минимизации лишних вычислений.
|
|
18
20
|
|
|
19
21
|
## Инициализация
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
Как вспомогательный компонент, `CacheItem` обычно создается менеджерами более высокого уровня. Тем не менее, его можно инициализировать вручную, если требуется кастомная, изолированная логика кэширования.
|
|
24
|
+
|
|
25
|
+
### Ограничения дженериков (Generic Constraints)
|
|
26
|
+
|
|
27
|
+
Для обеспечения строгой типизации закэшированного значения класс поддерживает следующий дженерик:
|
|
28
|
+
- `T` — Тип данных, хранящихся в кэше.
|
|
22
29
|
|
|
23
30
|
**Параметры:**
|
|
24
|
-
- `callback: () => T` — функция, которая
|
|
31
|
+
- `callback: () => T` — функция, которая генерирует или загружает данные для кэша.
|
|
25
32
|
|
|
26
33
|
```typescript
|
|
27
|
-
import { CacheItem } from '@dxtmisha/functional'
|
|
34
|
+
import { CacheItem } from '@dxtmisha/functional-basic'
|
|
28
35
|
|
|
29
36
|
// 1. Инициализация с функцией получения данных
|
|
30
37
|
const userCache = new CacheItem(() => fetchUserData())
|
|
38
|
+
|
|
39
|
+
// 2. Использование дженериков для строгой типизации
|
|
40
|
+
const numberCache = new CacheItem<number>(() => Math.random())
|
|
31
41
|
```
|
|
32
42
|
|
|
33
|
-
##
|
|
43
|
+
## Методы
|
|
34
44
|
|
|
35
|
-
###
|
|
45
|
+
### Доступ к кэшу
|
|
36
46
|
|
|
37
|
-
|
|
47
|
+
- `getCache(comparison?: any[]): T` — Извлекает значение из кэша. Если массив зависимостей `comparison` изменился, запускает пересчет.
|
|
48
|
+
- `getCacheAsync(comparison?: any[]): Promise<T>` — Асинхронная версия `getCache`. Возвращает Promise, который разрешается в закэшированные или новые данные.
|
|
38
49
|
|
|
39
|
-
|
|
40
|
-
- `comparison?: any[]` — массив зависимостей. Если они меняются, колбэк вычисляется заново.
|
|
50
|
+
### История
|
|
41
51
|
|
|
42
|
-
|
|
52
|
+
- `getCacheOld(): T | undefined` — Возвращает значение, которое хранилось в кэше непосредственно до последнего обновления.
|
|
43
53
|
|
|
54
|
+
## Примеры
|
|
55
|
+
|
|
56
|
+
### Инвалидация на основе зависимостей
|
|
44
57
|
```javascript
|
|
45
58
|
let count = 0
|
|
46
59
|
const counterCache = new CacheItem(() => ++count)
|
|
47
60
|
|
|
48
|
-
//
|
|
49
|
-
counterCache.getCache([
|
|
50
|
-
|
|
51
|
-
// Возвращает закэшированную 1 (зависимости совпадают)
|
|
52
|
-
counterCache.getCache([1])
|
|
53
|
-
|
|
54
|
-
// Зависимости изменились на [2], вычисляет и кэширует 2
|
|
55
|
-
counterCache.getCache([2])
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### `getCacheAsync`
|
|
61
|
+
// Первый вызов: вычисляет и кэширует 1
|
|
62
|
+
counterCache.getCache([10]) // возвращает 1
|
|
59
63
|
|
|
60
|
-
|
|
64
|
+
// Второй вызов: зависимости [10] не изменились, возвращает закэшированную 1
|
|
65
|
+
counterCache.getCache([10]) // возвращает 1
|
|
61
66
|
|
|
62
|
-
|
|
63
|
-
|
|
67
|
+
// Третий вызов: зависимости изменились на [20], вычисляет и кэширует 2
|
|
68
|
+
counterCache.getCache([20]) // возвращает 2
|
|
64
69
|
|
|
65
|
-
|
|
70
|
+
// Проверка истории:
|
|
71
|
+
console.log(counterCache.getCacheOld()) // возвращает 1
|
|
72
|
+
```
|
|
66
73
|
|
|
74
|
+
### Кэширование данных API
|
|
67
75
|
```javascript
|
|
68
|
-
const apiCache = new CacheItem(async () =>
|
|
76
|
+
const apiCache = new CacheItem(async () => {
|
|
77
|
+
const response = await fetch('/api/data')
|
|
78
|
+
return response.json()
|
|
79
|
+
})
|
|
69
80
|
|
|
70
|
-
// Загружает из сети
|
|
81
|
+
// Загружает данные из сети при первом запросе с ключом 'v1'
|
|
71
82
|
const data1 = await apiCache.getCacheAsync(['v1'])
|
|
72
83
|
|
|
73
|
-
// Возвращает из кэша
|
|
84
|
+
// Возвращает данные мгновенно из кэша для последующих запросов 'v1'
|
|
74
85
|
const data2 = await apiCache.getCacheAsync(['v1'])
|
|
75
86
|
```
|
|
76
|
-
|
|
77
|
-
## Исторические данные
|
|
78
|
-
|
|
79
|
-
### `getCacheOld`
|
|
80
|
-
|
|
81
|
-
Если происходит очистка кэша и загружаются новые данные, вы можете извлечь непосредственное предшествующее значение с помощью `getCacheOld()`.
|
|
82
|
-
|
|
83
|
-
**Возвращает:** `T | undefined` — предыдущие закэшированные данные.
|
|
84
|
-
|
|
85
|
-
```javascript
|
|
86
|
-
counterCache.getCache([1]) // Возвращает 1
|
|
87
|
-
counterCache.getCache([2]) // Возвращает 2
|
|
88
|
-
|
|
89
|
-
console.log(counterCache.getCacheOld()) // Возвращает 1
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Внутреннее устройство
|
|
93
|
-
|
|
94
|
-
`CacheItem` опирается на внутренний метод `isUpdate` для строгого сравнения входящего массива `comparison` с предыдущим. Если они отличаются по длине или строгому равенству (`===`) своих элементов, кэш помечается как устаревший, и внутреннее свойство `value` регенерируется.
|
|
@@ -1,94 +1,86 @@
|
|
|
1
1
|
import {Meta} from '@storybook/addon-docs/blocks'
|
|
2
2
|
|
|
3
|
-
<Meta title='@dxtmisha/vi/functional-basic/Classes/CacheItem - Quản lý
|
|
3
|
+
<Meta title='@dxtmisha/vi/functional-basic/Classes/CacheItem - Quản lý Bộ nhớ đệm Nâng cao'/>
|
|
4
4
|
|
|
5
5
|
# Lớp CacheItem
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
> **⚠️ Đã lỗi thời** — Lớp này đã lỗi thời và không nên được sử dụng.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Hệ thống cốt lõi quản lý từng mục lưu trữ bộ nhớ đệm (cache) riêng biệt. Trong khi `Cache` và `CacheStatic` cung cấp các giao diện công khai để truy xuất dữ liệu cache trong toàn bộ ứng dụng, thì lớp `CacheItem` đảm nhận việc quản lý an toàn vòng đời, lưu trữ và các quy tắc vô hiệu hóa (invalidation) cho từng giá trị cụ thể.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
- **Tính toán tuần tự (Lazy Evaluation)** — thực hiện nguyên lý tối giản tài nguyên: chỉ chạy lại quy trình tìm nạp từ đầu ở đoạn function nếu mảng lưu trữ đang bị lỗi thời hỏng cấu trúc.
|
|
13
|
-
- **Lưu trữ ghi nhớ bộ đệm cũ (Historical Memory)** — vẫn giữ dữ liệu thuộc vùng cache cũ (`getCacheOld`) kể cả khi chức năng ghi đè/tỉnh toán lại đã hoàn tất.
|
|
14
|
-
- **Thực thi Async** — hỗ trợ hoàn hảo phương pháp đồng bộ (`getCache`) và bất đồng bộ chạy kèm logic `Promise` (`getCacheAsync`) ở tiến trình nạp mảng dữ liệu.
|
|
11
|
+
> `CacheItem` là một **lớp phụ trợ**, được thiết kế để quản lý nội bộ các mục lưu trữ bộ nhớ đệm riêng lẻ. Trong hầu hết các trường hợp, bạn nên tương tác với bộ nhớ đệm thông qua các lớp `Cache` hoặc `CacheStatic`.
|
|
15
12
|
|
|
13
|
+
## Các tính năng chính
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
- **Theo dõi phụ thuộc** — duy trì các mảng so sánh để xác định xem giá trị được lưu trong bộ nhớ đệm có còn hiệu lực hay không.
|
|
16
|
+
- **Tính toán lười (Lazy Evaluation)** — đảm bảo rằng hàm callback (vốn có thể tốn kém tài nguyên) chỉ chạy khi các thành phần phụ thuộc thực sự thay đổi.
|
|
17
|
+
- **Bộ nhớ lịch sử** — giữ lại tham chiếu đến giá trị đã lưu trước đó (`getCacheOld`) ngay cả khi quá trình tính toán lại đã diễn ra.
|
|
18
|
+
- **Hỗ trợ Async** — xử lý tự nhiên cả việc nạp dữ liệu đồng bộ (`getCache`) và bất đồng bộ dựa trên `Promise` (`getCacheAsync`).
|
|
19
|
+
- **Vô hiệu hóa nghiêm ngặt** — sử dụng logic so sánh sâu để chỉ kích hoạt cập nhật khi thực sự cần thiết.
|
|
18
20
|
|
|
19
21
|
## Khởi tạo
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
Là một thành phần phụ trợ, `CacheItem` thường được khởi tạo bởi các trình quản lý cấp cao hơn. Tuy nhiên, nó có thể được tạo thủ công nếu yêu cầu logic lưu trữ bộ nhớ đệm riêng biệt và tùy chỉnh.
|
|
24
|
+
|
|
25
|
+
### Ràng buộc Generic (Generic Constraints)
|
|
26
|
+
|
|
27
|
+
Lớp hỗ trợ generic sau để đảm bảo kiểm soát kiểu dữ liệu nghiêm ngặt cho giá trị được lưu:
|
|
28
|
+
- `T` — Kiểu dữ liệu của giá trị được lưu trong bộ nhớ đệm.
|
|
22
29
|
|
|
23
30
|
**Tham số:**
|
|
24
|
-
- `callback: () => T` — hàm sẽ tạo dữ liệu cho bộ nhớ đệm.
|
|
31
|
+
- `callback: () => T` — một hàm sẽ tạo hoặc lấy dữ liệu cho bộ nhớ đệm.
|
|
25
32
|
|
|
26
33
|
```typescript
|
|
27
|
-
import { CacheItem } from '@dxtmisha/functional'
|
|
34
|
+
import { CacheItem } from '@dxtmisha/functional-basic'
|
|
28
35
|
|
|
29
|
-
// 1. Khởi tạo với hàm
|
|
36
|
+
// 1. Khởi tạo với một hàm truy xuất dữ liệu
|
|
30
37
|
const userCache = new CacheItem(() => fetchUserData())
|
|
38
|
+
|
|
39
|
+
// 2. Sử dụng generic để kiểm soát kiểu dữ liệu nghiêm ngặt
|
|
40
|
+
const numberCache = new CacheItem<number>(() => Math.random())
|
|
31
41
|
```
|
|
32
42
|
|
|
33
|
-
##
|
|
43
|
+
## Các phương thức
|
|
34
44
|
|
|
35
|
-
###
|
|
45
|
+
### Truy cập Bộ nhớ đệm
|
|
36
46
|
|
|
37
|
-
|
|
47
|
+
- `getCache(comparison?: any[]): T` — Lấy giá trị từ bộ nhớ đệm. Nếu các thành phần phụ thuộc trong mảng `comparison` thay đổi, nó sẽ kích hoạt tính toán lại.
|
|
48
|
+
- `getCacheAsync(comparison?: any[]): Promise<T>` — Phiên bản bất đồng bộ của `getCache`. Trả về một Promise giải quyết thành dữ liệu đã lưu hoặc dữ liệu mới được lấy về.
|
|
38
49
|
|
|
39
|
-
|
|
40
|
-
- `comparison?: any[]` — danh sách các đối tượng thiết lập kèm. Nếu thông tin bị sai với lúc lưu lại thì callback tự động phân tách cấu trúc tính toán lần nữa.
|
|
50
|
+
### Lịch sử
|
|
41
51
|
|
|
42
|
-
|
|
52
|
+
- `getCacheOld(): T | undefined` — Trả về giá trị đã được lưu trong bộ nhớ đệm ngay trước lần cập nhật cuối cùng.
|
|
43
53
|
|
|
54
|
+
## Ví dụ
|
|
55
|
+
|
|
56
|
+
### Vô hiệu hóa dựa trên phụ thuộc
|
|
44
57
|
```javascript
|
|
45
58
|
let count = 0
|
|
46
59
|
const counterCache = new CacheItem(() => ++count)
|
|
47
60
|
|
|
48
|
-
//
|
|
49
|
-
counterCache.getCache([
|
|
50
|
-
|
|
51
|
-
// Tìm ngay cache nhận dạng lưu: 1
|
|
52
|
-
counterCache.getCache([1])
|
|
53
|
-
|
|
54
|
-
// Tham số gắn kết biến đổi qua [2], xoá cache khởi động và lưu kết quả: 2
|
|
55
|
-
counterCache.getCache([2])
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### `getCacheAsync`
|
|
61
|
+
// Gọi lần đầu: tính toán và lưu cache giá trị 1
|
|
62
|
+
counterCache.getCache([10]) // trả về 1
|
|
59
63
|
|
|
60
|
-
|
|
64
|
+
// Gọi lần hai: các thành phần phụ thuộc khớp với [10], trả về giá trị 1 đã lưu
|
|
65
|
+
counterCache.getCache([10]) // trả về 1
|
|
61
66
|
|
|
62
|
-
|
|
63
|
-
|
|
67
|
+
// Gọi lần ba: các thành phần phụ thuộc thay đổi thành [20], tính toán và lưu cache giá trị 2
|
|
68
|
+
counterCache.getCache([20]) // trả về 2
|
|
64
69
|
|
|
65
|
-
|
|
70
|
+
// Kiểm tra lịch sử:
|
|
71
|
+
console.log(counterCache.getCacheOld()) // trả về 1
|
|
72
|
+
```
|
|
66
73
|
|
|
74
|
+
### Cấu hình Cache cho API Async
|
|
67
75
|
```javascript
|
|
68
|
-
const apiCache = new CacheItem(async () =>
|
|
76
|
+
const apiCache = new CacheItem(async () => {
|
|
77
|
+
const response = await fetch('/api/data')
|
|
78
|
+
return response.json()
|
|
79
|
+
})
|
|
69
80
|
|
|
70
|
-
//
|
|
81
|
+
// Lấy dữ liệu từ mạng cho yêu cầu 'v1' đầu tiên
|
|
71
82
|
const data1 = await apiCache.getCacheAsync(['v1'])
|
|
72
83
|
|
|
73
|
-
//
|
|
84
|
+
// Trả về từ bộ nhớ đệm ngay lập tức cho các yêu cầu 'v1' tiếp theo
|
|
74
85
|
const data2 = await apiCache.getCacheAsync(['v1'])
|
|
75
86
|
```
|
|
76
|
-
|
|
77
|
-
## Dữ liệu lịch sử
|
|
78
|
-
|
|
79
|
-
### `getCacheOld`
|
|
80
|
-
|
|
81
|
-
Hàm phụ lấy lại biến thuộc nhóm ghi đè trước lần cuối tái tạo cache data, thông qua lệnh gọi `getCacheOld()`.
|
|
82
|
-
|
|
83
|
-
**Trả về:** `T | undefined` — biến định danh cũ nhất.
|
|
84
|
-
|
|
85
|
-
```javascript
|
|
86
|
-
counterCache.getCache([1]) // Trả 1
|
|
87
|
-
counterCache.getCache([2]) // Trả 2
|
|
88
|
-
|
|
89
|
-
console.log(counterCache.getCacheOld()) // Trả 1
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Tổng quan nội bộ
|
|
93
|
-
|
|
94
|
-
`CacheItem` hoạt động chặt qua module `isUpdate` tiến hành phân giải và đánh dấu (`===`) xem giá trị từ array đầu vào của thuộc tính biến tham chiếu `comparison` với độ tin cậy được thiết lập từ mảng cũ đã giống về độ dài cấu trúc hoặc số chiều trong node hay không. Chỉ cần một giá trị khác với biến ban đầu thì `CacheItem` đánh dấu mảng thành cấu trúc chết (stale/hỏng) để tạo tiến trình đẩy `value` tính lại toàn bộ.
|
|
@@ -4,6 +4,8 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
4
4
|
|
|
5
5
|
# CacheStatic Class
|
|
6
6
|
|
|
7
|
+
> **⚠️ Deprecated** — This class is obsolete and should not be used. / Этот класс устарел и не рекомендуется к использованию.
|
|
8
|
+
|
|
7
9
|
A wrapper class providing a globally accessible, static cache instance. It allows you to perform fast caching operations anywhere during code execution without needing to instantiate or pass around a dedicated `Cache` object.
|
|
8
10
|
|
|
9
11
|
## Key Features
|
|
@@ -47,7 +49,17 @@ function calculateHeavyData(id) {
|
|
|
47
49
|
const res1 = calculateHeavyData(5)
|
|
48
50
|
|
|
49
51
|
// File B.js
|
|
50
|
-
// Same function, same id. It hits the global cache.
|
|
51
52
|
// Will NOT log 'Calculating...', instantly returns 500
|
|
52
53
|
const res2 = calculateHeavyData(5)
|
|
53
54
|
```
|
|
55
|
+
|
|
56
|
+
### `getAsync`
|
|
57
|
+
|
|
58
|
+
Asynchronous version of the `get()` method. Useful when the callback function returns a `Promise`.
|
|
59
|
+
|
|
60
|
+
**Parameters:**
|
|
61
|
+
- `name: string` — a unique identifier for the specific global cache entry.
|
|
62
|
+
- `callback: () => Promise<T> | T` — the asynchronous function that computes the value.
|
|
63
|
+
- `comparison?: any[]` — optional array of dependencies. Passing a new array (where values or length differ) invalidates the cache and forces a recalculation.
|
|
64
|
+
|
|
65
|
+
**Returns:** `Promise<T>` — a promise that resolves to the cached or computed value.
|
|
@@ -4,6 +4,8 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
4
4
|
|
|
5
5
|
# Класс CacheStatic
|
|
6
6
|
|
|
7
|
+
> **⚠️ Устарел** — Этот класс устарел и не рекомендуется к использованию.
|
|
8
|
+
|
|
7
9
|
Класс-обертка, предоставляющий глобально доступный статический экземпляр кэша. Он позволяет выполнять операции быстрого кэширования в любом месте во время выполнения кода без необходимости создавать экземпляр или передавать объект `Cache`.
|
|
8
10
|
|
|
9
11
|
## Ключевые особенности
|
|
@@ -47,7 +49,17 @@ function calculateHeavyData(id) {
|
|
|
47
49
|
const res1 = calculateHeavyData(5)
|
|
48
50
|
|
|
49
51
|
// Файл B.js
|
|
50
|
-
// Та же функция, тот же id. Попадает в глобальный кэш.
|
|
51
52
|
// НЕ будет выводить 'Вычисляем...', мгновенно вернет 500
|
|
52
53
|
const res2 = calculateHeavyData(5)
|
|
53
54
|
```
|
|
55
|
+
|
|
56
|
+
### `getAsync`
|
|
57
|
+
|
|
58
|
+
Асинхронная версия метода `get()`. Полезна, когда функция обратного вызова возвращает `Promise`.
|
|
59
|
+
|
|
60
|
+
**Параметры:**
|
|
61
|
+
- `name: string` — уникальный идентификатор для вашей записи в глобальном кэше.
|
|
62
|
+
- `callback: () => Promise<T> | T` — асинхронная функция, которая вычисляет значение.
|
|
63
|
+
- `comparison?: any[]` — опциональный массив зависимостей. Передача нового массива (где значения или длина отличаются) очищает кэш и вызывает пересчет.
|
|
64
|
+
|
|
65
|
+
**Возвращает:** `Promise<T>` — промис, который разрешается в кэшированное или вычисленное значение.
|
|
@@ -4,6 +4,8 @@ import {Meta} from '@storybook/addon-docs/blocks'
|
|
|
4
4
|
|
|
5
5
|
# Lớp CacheStatic
|
|
6
6
|
|
|
7
|
+
> **⚠️ Đã lỗi thời** — Lớp này đã lỗi thời và không nên được sử dụng.
|
|
8
|
+
|
|
7
9
|
Một lớp định dạng lớp bọc ngoài (wrapper class) đóng vai trò xây dựng lớp giao tiếp toàn cục sử dụng bộ nhớ cache tĩnh (static cache instance). Với `CacheStatic`, cơ chế hoạt động giúp bộ nhớ có tính linh hoạt xuyên suốt đoạn code ở mọi nơi trong phân lớp code được thực thi, thay thế và loại bỏ hoàn toàn quá trình tạo đối tượng object `Cache` chuyên biệt như cấu trúc gốc.
|
|
8
10
|
|
|
9
11
|
## Các tính năng chính
|
|
@@ -51,3 +53,14 @@ const res1 = calculateHeavyData(5)
|
|
|
51
53
|
// Không thực thi lại callback 'Calculating...', kết xuất liền giá trị 500.
|
|
52
54
|
const res2 = calculateHeavyData(5)
|
|
53
55
|
```
|
|
56
|
+
|
|
57
|
+
### `getAsync`
|
|
58
|
+
|
|
59
|
+
Phiên bản bất đồng bộ của phương thức `get()`. Hữu ích khi hàm callback trả về một `Promise`.
|
|
60
|
+
|
|
61
|
+
**Tham số:**
|
|
62
|
+
- `name: string` — định danh duy nhất cho mục nhập cache toàn cục cụ thể.
|
|
63
|
+
- `callback: () => Promise<T> | T` — hàm bất đồng bộ thực hiện tính toán giá trị.
|
|
64
|
+
- `comparison?: any[]` — mảng phụ thuộc tùy chọn. Việc truyền một mảng mới (nơi các giá trị hoặc độ dài khác nhau) sẽ vô hiệu hóa bộ nhớ đệm và buộc tính toán lại.
|
|
65
|
+
|
|
66
|
+
**Trả về:** `Promise<T>` — một promise trả về giá trị đã lưu trong bộ nhớ đệm hoặc giá trị vừa được tính toán.
|