@nickyzj2023/utils 1.0.33 → 1.0.35

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.
Files changed (42) hide show
  1. package/biome.json +36 -44
  2. package/dist/index.d.ts +9 -8
  3. package/dist/index.js +2 -2
  4. package/dist/number.d.ts +7 -0
  5. package/docs/assets/highlight.css +92 -92
  6. package/docs/assets/icons.js +17 -17
  7. package/docs/assets/icons.svg +1 -1
  8. package/docs/assets/navigation.js +1 -1
  9. package/docs/assets/search.js +1 -1
  10. package/docs/assets/style.css +1633 -1633
  11. package/docs/functions/camelToSnake.html +178 -178
  12. package/docs/functions/capitalize.html +178 -178
  13. package/docs/functions/compactStr.html +182 -182
  14. package/docs/functions/decapitalize.html +178 -178
  15. package/docs/functions/fetcher.html +188 -188
  16. package/docs/functions/imageUrlToBase64.html +178 -178
  17. package/docs/functions/isFalsy.html +178 -178
  18. package/docs/functions/isNil.html +178 -178
  19. package/docs/functions/isObject.html +178 -178
  20. package/docs/functions/isPrimitive.html +178 -178
  21. package/docs/functions/isTruthy.html +178 -178
  22. package/docs/functions/loopUntil.html +180 -180
  23. package/docs/functions/mapKeys.html +180 -180
  24. package/docs/functions/mapValues.html +181 -181
  25. package/docs/functions/mergeObjects.html +184 -184
  26. package/docs/functions/randomInt.html +178 -0
  27. package/docs/functions/sleep.html +179 -179
  28. package/docs/functions/snakeToCamel.html +178 -178
  29. package/docs/functions/timeLog.html +178 -178
  30. package/docs/functions/to.html +180 -180
  31. package/docs/functions/withCache.html +185 -185
  32. package/docs/modules.html +174 -174
  33. package/docs/types/DeepMapKeys.html +174 -174
  34. package/docs/types/DeepMapValues.html +174 -174
  35. package/docs/types/Falsy.html +174 -174
  36. package/docs/types/Primitive.html +174 -174
  37. package/docs/types/RequestInit.html +174 -174
  38. package/docs/types/SetTtl.html +174 -174
  39. package/package.json +24 -24
  40. package/src/function.ts +15 -15
  41. package/src/index.ts +9 -8
  42. package/src/number.ts +9 -0
@@ -1,185 +1,185 @@
1
- <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>withCache | @nickyzj2023/utils</title><meta name="description" content="Documentation for @nickyzj2023/utils"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><style>
2
- @media (prefers-color-scheme: dark) {
3
- :root {
4
- --md-sys-color-primary: #f6be46;
5
- --md-sys-color-on-primary: #412d00;
6
- --md-sys-color-primary-container: #5d4200;
7
- --md-sys-color-on-primary-container: #ffdea3;
8
- --md-sys-color-secondary: #d9c4a0;
9
- --md-sys-color-on-secondary: #3b2f15;
10
- --md-sys-color-secondary-container: #53452a;
11
- --md-sys-color-on-secondary-container: #f6e0bb;
12
- --md-sys-color-tertiary: #b2cfa8;
13
- --md-sys-color-on-tertiary: #1e361a;
14
- --md-sys-color-tertiary-container: #344d2f;
15
- --md-sys-color-on-tertiary-container: #cdebc2;
16
- --md-sys-color-error: #ffb4ab;
17
- --md-sys-color-on-error: #690005;
18
- --md-sys-color-error-container: #93000a;
19
- --md-sys-color-on-error-container: #ffb4ab;
20
- --md-sys-color-background: #1e1b16;
21
- --md-sys-color-on-background: #e9e1d9;
22
- --md-sys-color-surface: #1e1b16;
23
- --md-sys-color-on-surface: #e9e1d9;
24
- --md-sys-color-surface-variant: #4e4639;
25
- --md-sys-color-on-surface-variant: #d1c5b4;
26
- --md-sys-color-outline: #9a8f80;
27
- --md-sys-color-outline-variant: #4e4639;
28
- --md-sys-color-shadow: #000000;
29
- --md-sys-color-scrim: #000000;
30
- --md-sys-color-inverse-surface: #e9e1d9;
31
- --md-sys-color-inverse-on-surface: #34302a;
32
- --md-sys-color-inverse-primary: #7a5900;
33
- --md-sys-color-surface-dim: #16130e;
34
- --md-sys-color-surface-bright: #3d3933;
35
- --md-sys-color-surface-container-lowest: #110e09;
36
- --md-sys-color-surface-container-low: #1e1b16;
37
- --md-sys-color-surface-container: #221f1a;
38
- --md-sys-color-surface-container-high: #2d2924;
39
- --md-sys-color-surface-container-highest: #38342e
40
- }
41
- }
42
- :root[data-theme="dark"] {
43
- --md-sys-color-primary: #f6be46;
44
- --md-sys-color-on-primary: #412d00;
45
- --md-sys-color-primary-container: #5d4200;
46
- --md-sys-color-on-primary-container: #ffdea3;
47
- --md-sys-color-secondary: #d9c4a0;
48
- --md-sys-color-on-secondary: #3b2f15;
49
- --md-sys-color-secondary-container: #53452a;
50
- --md-sys-color-on-secondary-container: #f6e0bb;
51
- --md-sys-color-tertiary: #b2cfa8;
52
- --md-sys-color-on-tertiary: #1e361a;
53
- --md-sys-color-tertiary-container: #344d2f;
54
- --md-sys-color-on-tertiary-container: #cdebc2;
55
- --md-sys-color-error: #ffb4ab;
56
- --md-sys-color-on-error: #690005;
57
- --md-sys-color-error-container: #93000a;
58
- --md-sys-color-on-error-container: #ffb4ab;
59
- --md-sys-color-background: #1e1b16;
60
- --md-sys-color-on-background: #e9e1d9;
61
- --md-sys-color-surface: #1e1b16;
62
- --md-sys-color-on-surface: #e9e1d9;
63
- --md-sys-color-surface-variant: #4e4639;
64
- --md-sys-color-on-surface-variant: #d1c5b4;
65
- --md-sys-color-outline: #9a8f80;
66
- --md-sys-color-outline-variant: #4e4639;
67
- --md-sys-color-shadow: #000000;
68
- --md-sys-color-scrim: #000000;
69
- --md-sys-color-inverse-surface: #e9e1d9;
70
- --md-sys-color-inverse-on-surface: #34302a;
71
- --md-sys-color-inverse-primary: #7a5900;
72
- --md-sys-color-surface-dim: #16130e;
73
- --md-sys-color-surface-bright: #3d3933;
74
- --md-sys-color-surface-container-lowest: #110e09;
75
- --md-sys-color-surface-container-low: #1e1b16;
76
- --md-sys-color-surface-container: #221f1a;
77
- --md-sys-color-surface-container-high: #2d2924;
78
- --md-sys-color-surface-container-highest: #38342e
79
- }
80
-
81
- @media (prefers-color-scheme: light) {
82
- :root {
83
- --md-sys-color-primary: #7a5900;
84
- --md-sys-color-on-primary: #ffffff;
85
- --md-sys-color-primary-container: #ffdea3;
86
- --md-sys-color-on-primary-container: #261900;
87
- --md-sys-color-secondary: #6c5c3f;
88
- --md-sys-color-on-secondary: #ffffff;
89
- --md-sys-color-secondary-container: #f6e0bb;
90
- --md-sys-color-on-secondary-container: #251a04;
91
- --md-sys-color-tertiary: #4b6545;
92
- --md-sys-color-on-tertiary: #ffffff;
93
- --md-sys-color-tertiary-container: #cdebc2;
94
- --md-sys-color-on-tertiary-container: #092007;
95
- --md-sys-color-error: #ba1a1a;
96
- --md-sys-color-on-error: #ffffff;
97
- --md-sys-color-error-container: #ffdad6;
98
- --md-sys-color-on-error-container: #410002;
99
- --md-sys-color-background: #fffbff;
100
- --md-sys-color-on-background: #1e1b16;
101
- --md-sys-color-surface: #fffbff;
102
- --md-sys-color-on-surface: #1e1b16;
103
- --md-sys-color-surface-variant: #ede1cf;
104
- --md-sys-color-on-surface-variant: #4e4639;
105
- --md-sys-color-outline: #7f7667;
106
- --md-sys-color-outline-variant: #d1c5b4;
107
- --md-sys-color-shadow: #000000;
108
- --md-sys-color-scrim: #000000;
109
- --md-sys-color-inverse-surface: #34302a;
110
- --md-sys-color-inverse-on-surface: #f8efe7;
111
- --md-sys-color-inverse-primary: #f6be46;
112
- --md-sys-color-surface-dim: #e1d9d0;
113
- --md-sys-color-surface-bright: #fff8f2;
114
- --md-sys-color-surface-container-lowest: #ffffff;
115
- --md-sys-color-surface-container-low: #fbf2e9;
116
- --md-sys-color-surface-container: #f5ede4;
117
- --md-sys-color-surface-container-high: #efe7de;
118
- --md-sys-color-surface-container-highest: #e9e1d9
119
- }
120
- }
121
- :root[data-theme="light"] {
122
- --md-sys-color-primary: #7a5900;
123
- --md-sys-color-on-primary: #ffffff;
124
- --md-sys-color-primary-container: #ffdea3;
125
- --md-sys-color-on-primary-container: #261900;
126
- --md-sys-color-secondary: #6c5c3f;
127
- --md-sys-color-on-secondary: #ffffff;
128
- --md-sys-color-secondary-container: #f6e0bb;
129
- --md-sys-color-on-secondary-container: #251a04;
130
- --md-sys-color-tertiary: #4b6545;
131
- --md-sys-color-on-tertiary: #ffffff;
132
- --md-sys-color-tertiary-container: #cdebc2;
133
- --md-sys-color-on-tertiary-container: #092007;
134
- --md-sys-color-error: #ba1a1a;
135
- --md-sys-color-on-error: #ffffff;
136
- --md-sys-color-error-container: #ffdad6;
137
- --md-sys-color-on-error-container: #410002;
138
- --md-sys-color-background: #fffbff;
139
- --md-sys-color-on-background: #1e1b16;
140
- --md-sys-color-surface: #fffbff;
141
- --md-sys-color-on-surface: #1e1b16;
142
- --md-sys-color-surface-variant: #ede1cf;
143
- --md-sys-color-on-surface-variant: #4e4639;
144
- --md-sys-color-outline: #7f7667;
145
- --md-sys-color-outline-variant: #d1c5b4;
146
- --md-sys-color-shadow: #000000;
147
- --md-sys-color-scrim: #000000;
148
- --md-sys-color-inverse-surface: #34302a;
149
- --md-sys-color-inverse-on-surface: #f8efe7;
150
- --md-sys-color-inverse-primary: #f6be46;
151
- --md-sys-color-surface-dim: #e1d9d0;
152
- --md-sys-color-surface-bright: #fff8f2;
153
- --md-sys-color-surface-container-lowest: #ffffff;
154
- --md-sys-color-surface-container-low: #fbf2e9;
155
- --md-sys-color-surface-container: #f5ede4;
156
- --md-sys-color-surface-container-high: #efe7de;
157
- --md-sys-color-surface-container-highest: #e9e1d9
158
- }
159
- </style><link rel="stylesheet" href="../assets/material-style.css"/></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@nickyzj2023/utils</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">withCache</a></li></ul><h1>Function withCache</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="withcache"><span class="tsd-kind-call-signature">withCache</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">fn</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">this</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">setTtl</span><span class="tsd-signature-symbol">:</span> <a href="../types/SetTtl.html" class="tsd-signature-type tsd-kind-type-alias">SetTtl</a> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">ttlSeconds</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span><br/>    <span class="tsd-kind-call-signature">clear</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">;</span><br/>    <span class="tsd-kind-call-signature">updateTtl</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">seconds</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">;</span><br/>    <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span><a href="#withcache" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>创建一个带缓存的高阶函数</p>
160
- </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="withcacheargs"><span class="tsd-kind-type-parameter">Args</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span></span><div class="tsd-comment tsd-typography"><p>被包装函数的参数类型数组</p>
161
- </div></li><li><span id="withcacheresult"><span class="tsd-kind-type-parameter">Result</span></span><div class="tsd-comment tsd-typography"><p>被包装函数的返回类型</p>
162
- </div></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">fn</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">this</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">setTtl</span><span class="tsd-signature-symbol">:</span> <a href="../types/SetTtl.html" class="tsd-signature-type tsd-kind-type-alias">SetTtl</a> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a></span><div class="tsd-comment tsd-typography"><p>需要被缓存的函数,参数里附带的 setTtl 方法用于根据具体情况改写过期时间</p>
163
- </div></li><li><span><span class="tsd-kind-parameter">ttlSeconds</span>: <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> = -1</span></span><div class="tsd-comment tsd-typography"><p>以秒为单位的过期时间,-1 表示永不过期,默认 -1,会被回调函数里的 setTtl() 覆盖</p>
164
- </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-call-signature">clear</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-call-signature">updateTtl</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">seconds</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">;</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a> <span class="tsd-signature-symbol">}</span></h4><p>返回包装后的函数,以及缓存相关的额外方法</p>
165
- <ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature"><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a></h4></li></ul></li><li class="tsd-parameter"><h5><span class="tsd-kind-method">clear</span><span class="tsd-signature-symbol">:</span> function</h5><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><span class="tsd-kind-call-signature">clear</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>手动清除缓存</p>
166
- </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Nickyzj628/utils/blob/60483b28731bee7d62642bb04f7949906f1df42e/src/hoc.ts#L98">hoc.ts:98</a></li></ul></aside></div></li></ul></li><li class="tsd-parameter"><h5><span class="tsd-kind-method">updateTtl</span><span class="tsd-signature-symbol">:</span> function</h5><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><span class="tsd-kind-call-signature">updateTtl</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">seconds</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>更新 TTL,同时刷新所有未过期缓存的时间</p>
167
- </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">seconds</span>: <span class="tsd-signature-type">number</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Nickyzj628/utils/blob/60483b28731bee7d62642bb04f7949906f1df42e/src/hoc.ts#L101">hoc.ts:101</a></li></ul></aside></div></li></ul></li></ul><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-0">// 异步函数示例</span><br/><span class="hl-6">const</span><span class="hl-2"> </span><span class="hl-7">fetchData</span><span class="hl-2"> = </span><span class="hl-1">withCache</span><span class="hl-2">(</span><span class="hl-6">async</span><span class="hl-2"> </span><span class="hl-6">function</span><span class="hl-2"> (</span><span class="hl-5">url</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2">) {</span><br/><span class="hl-2"> </span><span class="hl-6">const</span><span class="hl-2"> </span><span class="hl-7">data</span><span class="hl-2"> = </span><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetch</span><span class="hl-2">(</span><span class="hl-5">url</span><span class="hl-2">).</span><span class="hl-1">then</span><span class="hl-2">((</span><span class="hl-5">res</span><span class="hl-2">) </span><span class="hl-6">=&gt;</span><span class="hl-2"> </span><span class="hl-5">res</span><span class="hl-2">.</span><span class="hl-1">json</span><span class="hl-2">());</span><br/><span class="hl-2"> </span><span class="hl-6">this</span><span class="hl-2">.</span><span class="hl-1">setTtl</span><span class="hl-2">(</span><span class="hl-5">data</span><span class="hl-2">.</span><span class="hl-5">expiresIn</span><span class="hl-2">); </span><span class="hl-0">// 根据实际情况调整过期时间</span><br/><span class="hl-2"> </span><span class="hl-4">return</span><span class="hl-2"> </span><span class="hl-5">data</span><span class="hl-2">;</span><br/><span class="hl-2">});</span><br/><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlA</span><span class="hl-2">);</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlA</span><span class="hl-2">); </span><span class="hl-0">// 使用缓存结果</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlB</span><span class="hl-2">);</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlB</span><span class="hl-2">); </span><span class="hl-0">// 使用缓存结果</span><br/><br/><span class="hl-5">fetchData</span><span class="hl-2">.</span><span class="hl-1">clear</span><span class="hl-2">(); </span><span class="hl-0">// 清除缓存</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlA</span><span class="hl-2">); </span><span class="hl-0">// 重新请求</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlB</span><span class="hl-2">); </span><span class="hl-0">// 重新请求</span><br/><br/><span class="hl-0">// 缓存过期前</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">sleep</span><span class="hl-2">();</span><br/><span class="hl-5">fetchData</span><span class="hl-2">.</span><span class="hl-1">updateTtl</span><span class="hl-2">(</span><span class="hl-9">180</span><span class="hl-2">); </span><span class="hl-0">// 更新 ttl 并为所有未过期的缓存续期</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlA</span><span class="hl-2">); </span><span class="hl-0">// 使用缓存结果</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlB</span><span class="hl-2">); </span><span class="hl-0">// 使用缓存结果</span>
168
- </code><button type="button">Copy</button></pre>
169
-
170
- </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Nickyzj628/utils/blob/60483b28731bee7d62642bb04f7949906f1df42e/src/hoc.ts#L42">hoc.ts:42</a></li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@nickyzj2023/utils</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div><script>
171
- try {
172
- const generateLinkElement = document.querySelector(".tsd-generator a");
173
- const link = document.createElement("a");
174
- Object.assign(link, {
175
- href: "https://github.com/dmnsgn/typedoc-material-theme",
176
- target: "_blank",
177
- rel: "noreferrer",
178
- innerText: "typedoc-material-theme."
179
- });
180
- generateLinkElement.insertAdjacentElement("afterend", link);
181
- generateLinkElement.insertAdjacentText("afterend", " with ");
182
- } catch (error) {
183
-
184
- }
185
- </script></body></html>
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>withCache | @nickyzj2023/utils</title><meta name="description" content="Documentation for @nickyzj2023/utils"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><style>
2
+ @media (prefers-color-scheme: dark) {
3
+ :root {
4
+ --md-sys-color-primary: #f6be46;
5
+ --md-sys-color-on-primary: #412d00;
6
+ --md-sys-color-primary-container: #5d4200;
7
+ --md-sys-color-on-primary-container: #ffdea3;
8
+ --md-sys-color-secondary: #d9c4a0;
9
+ --md-sys-color-on-secondary: #3b2f15;
10
+ --md-sys-color-secondary-container: #53452a;
11
+ --md-sys-color-on-secondary-container: #f6e0bb;
12
+ --md-sys-color-tertiary: #b2cfa8;
13
+ --md-sys-color-on-tertiary: #1e361a;
14
+ --md-sys-color-tertiary-container: #344d2f;
15
+ --md-sys-color-on-tertiary-container: #cdebc2;
16
+ --md-sys-color-error: #ffb4ab;
17
+ --md-sys-color-on-error: #690005;
18
+ --md-sys-color-error-container: #93000a;
19
+ --md-sys-color-on-error-container: #ffb4ab;
20
+ --md-sys-color-background: #1e1b16;
21
+ --md-sys-color-on-background: #e9e1d9;
22
+ --md-sys-color-surface: #1e1b16;
23
+ --md-sys-color-on-surface: #e9e1d9;
24
+ --md-sys-color-surface-variant: #4e4639;
25
+ --md-sys-color-on-surface-variant: #d1c5b4;
26
+ --md-sys-color-outline: #9a8f80;
27
+ --md-sys-color-outline-variant: #4e4639;
28
+ --md-sys-color-shadow: #000000;
29
+ --md-sys-color-scrim: #000000;
30
+ --md-sys-color-inverse-surface: #e9e1d9;
31
+ --md-sys-color-inverse-on-surface: #34302a;
32
+ --md-sys-color-inverse-primary: #7a5900;
33
+ --md-sys-color-surface-dim: #16130e;
34
+ --md-sys-color-surface-bright: #3d3933;
35
+ --md-sys-color-surface-container-lowest: #110e09;
36
+ --md-sys-color-surface-container-low: #1e1b16;
37
+ --md-sys-color-surface-container: #221f1a;
38
+ --md-sys-color-surface-container-high: #2d2924;
39
+ --md-sys-color-surface-container-highest: #38342e
40
+ }
41
+ }
42
+ :root[data-theme="dark"] {
43
+ --md-sys-color-primary: #f6be46;
44
+ --md-sys-color-on-primary: #412d00;
45
+ --md-sys-color-primary-container: #5d4200;
46
+ --md-sys-color-on-primary-container: #ffdea3;
47
+ --md-sys-color-secondary: #d9c4a0;
48
+ --md-sys-color-on-secondary: #3b2f15;
49
+ --md-sys-color-secondary-container: #53452a;
50
+ --md-sys-color-on-secondary-container: #f6e0bb;
51
+ --md-sys-color-tertiary: #b2cfa8;
52
+ --md-sys-color-on-tertiary: #1e361a;
53
+ --md-sys-color-tertiary-container: #344d2f;
54
+ --md-sys-color-on-tertiary-container: #cdebc2;
55
+ --md-sys-color-error: #ffb4ab;
56
+ --md-sys-color-on-error: #690005;
57
+ --md-sys-color-error-container: #93000a;
58
+ --md-sys-color-on-error-container: #ffb4ab;
59
+ --md-sys-color-background: #1e1b16;
60
+ --md-sys-color-on-background: #e9e1d9;
61
+ --md-sys-color-surface: #1e1b16;
62
+ --md-sys-color-on-surface: #e9e1d9;
63
+ --md-sys-color-surface-variant: #4e4639;
64
+ --md-sys-color-on-surface-variant: #d1c5b4;
65
+ --md-sys-color-outline: #9a8f80;
66
+ --md-sys-color-outline-variant: #4e4639;
67
+ --md-sys-color-shadow: #000000;
68
+ --md-sys-color-scrim: #000000;
69
+ --md-sys-color-inverse-surface: #e9e1d9;
70
+ --md-sys-color-inverse-on-surface: #34302a;
71
+ --md-sys-color-inverse-primary: #7a5900;
72
+ --md-sys-color-surface-dim: #16130e;
73
+ --md-sys-color-surface-bright: #3d3933;
74
+ --md-sys-color-surface-container-lowest: #110e09;
75
+ --md-sys-color-surface-container-low: #1e1b16;
76
+ --md-sys-color-surface-container: #221f1a;
77
+ --md-sys-color-surface-container-high: #2d2924;
78
+ --md-sys-color-surface-container-highest: #38342e
79
+ }
80
+
81
+ @media (prefers-color-scheme: light) {
82
+ :root {
83
+ --md-sys-color-primary: #7a5900;
84
+ --md-sys-color-on-primary: #ffffff;
85
+ --md-sys-color-primary-container: #ffdea3;
86
+ --md-sys-color-on-primary-container: #261900;
87
+ --md-sys-color-secondary: #6c5c3f;
88
+ --md-sys-color-on-secondary: #ffffff;
89
+ --md-sys-color-secondary-container: #f6e0bb;
90
+ --md-sys-color-on-secondary-container: #251a04;
91
+ --md-sys-color-tertiary: #4b6545;
92
+ --md-sys-color-on-tertiary: #ffffff;
93
+ --md-sys-color-tertiary-container: #cdebc2;
94
+ --md-sys-color-on-tertiary-container: #092007;
95
+ --md-sys-color-error: #ba1a1a;
96
+ --md-sys-color-on-error: #ffffff;
97
+ --md-sys-color-error-container: #ffdad6;
98
+ --md-sys-color-on-error-container: #410002;
99
+ --md-sys-color-background: #fffbff;
100
+ --md-sys-color-on-background: #1e1b16;
101
+ --md-sys-color-surface: #fffbff;
102
+ --md-sys-color-on-surface: #1e1b16;
103
+ --md-sys-color-surface-variant: #ede1cf;
104
+ --md-sys-color-on-surface-variant: #4e4639;
105
+ --md-sys-color-outline: #7f7667;
106
+ --md-sys-color-outline-variant: #d1c5b4;
107
+ --md-sys-color-shadow: #000000;
108
+ --md-sys-color-scrim: #000000;
109
+ --md-sys-color-inverse-surface: #34302a;
110
+ --md-sys-color-inverse-on-surface: #f8efe7;
111
+ --md-sys-color-inverse-primary: #f6be46;
112
+ --md-sys-color-surface-dim: #e1d9d0;
113
+ --md-sys-color-surface-bright: #fff8f2;
114
+ --md-sys-color-surface-container-lowest: #ffffff;
115
+ --md-sys-color-surface-container-low: #fbf2e9;
116
+ --md-sys-color-surface-container: #f5ede4;
117
+ --md-sys-color-surface-container-high: #efe7de;
118
+ --md-sys-color-surface-container-highest: #e9e1d9
119
+ }
120
+ }
121
+ :root[data-theme="light"] {
122
+ --md-sys-color-primary: #7a5900;
123
+ --md-sys-color-on-primary: #ffffff;
124
+ --md-sys-color-primary-container: #ffdea3;
125
+ --md-sys-color-on-primary-container: #261900;
126
+ --md-sys-color-secondary: #6c5c3f;
127
+ --md-sys-color-on-secondary: #ffffff;
128
+ --md-sys-color-secondary-container: #f6e0bb;
129
+ --md-sys-color-on-secondary-container: #251a04;
130
+ --md-sys-color-tertiary: #4b6545;
131
+ --md-sys-color-on-tertiary: #ffffff;
132
+ --md-sys-color-tertiary-container: #cdebc2;
133
+ --md-sys-color-on-tertiary-container: #092007;
134
+ --md-sys-color-error: #ba1a1a;
135
+ --md-sys-color-on-error: #ffffff;
136
+ --md-sys-color-error-container: #ffdad6;
137
+ --md-sys-color-on-error-container: #410002;
138
+ --md-sys-color-background: #fffbff;
139
+ --md-sys-color-on-background: #1e1b16;
140
+ --md-sys-color-surface: #fffbff;
141
+ --md-sys-color-on-surface: #1e1b16;
142
+ --md-sys-color-surface-variant: #ede1cf;
143
+ --md-sys-color-on-surface-variant: #4e4639;
144
+ --md-sys-color-outline: #7f7667;
145
+ --md-sys-color-outline-variant: #d1c5b4;
146
+ --md-sys-color-shadow: #000000;
147
+ --md-sys-color-scrim: #000000;
148
+ --md-sys-color-inverse-surface: #34302a;
149
+ --md-sys-color-inverse-on-surface: #f8efe7;
150
+ --md-sys-color-inverse-primary: #f6be46;
151
+ --md-sys-color-surface-dim: #e1d9d0;
152
+ --md-sys-color-surface-bright: #fff8f2;
153
+ --md-sys-color-surface-container-lowest: #ffffff;
154
+ --md-sys-color-surface-container-low: #fbf2e9;
155
+ --md-sys-color-surface-container: #f5ede4;
156
+ --md-sys-color-surface-container-high: #efe7de;
157
+ --md-sys-color-surface-container-highest: #e9e1d9
158
+ }
159
+ </style><link rel="stylesheet" href="../assets/material-style.css"/></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@nickyzj2023/utils</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">withCache</a></li></ul><h1>Function withCache</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="withcache"><span class="tsd-kind-call-signature">withCache</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">,</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">fn</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">this</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">setTtl</span><span class="tsd-signature-symbol">:</span> <a href="../types/SetTtl.html" class="tsd-signature-type tsd-kind-type-alias">SetTtl</a> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">ttlSeconds</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span><br/>    <span class="tsd-kind-call-signature">clear</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">;</span><br/>    <span class="tsd-kind-call-signature">updateTtl</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">seconds</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">;</span><br/>    <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span><a href="#withcache" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>创建一个带缓存的高阶函数</p>
160
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="withcacheargs"><span class="tsd-kind-type-parameter">Args</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span></span><div class="tsd-comment tsd-typography"><p>被包装函数的参数类型数组</p>
161
+ </div></li><li><span id="withcacheresult"><span class="tsd-kind-type-parameter">Result</span></span><div class="tsd-comment tsd-typography"><p>被包装函数的返回类型</p>
162
+ </div></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">fn</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">this</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">setTtl</span><span class="tsd-signature-symbol">:</span> <a href="../types/SetTtl.html" class="tsd-signature-type tsd-kind-type-alias">SetTtl</a> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a></span><div class="tsd-comment tsd-typography"><p>需要被缓存的函数,参数里附带的 setTtl 方法用于根据具体情况改写过期时间</p>
163
+ </div></li><li><span><span class="tsd-kind-parameter">ttlSeconds</span>: <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> = -1</span></span><div class="tsd-comment tsd-typography"><p>以秒为单位的过期时间,-1 表示永不过期,默认 -1,会被回调函数里的 setTtl() 覆盖</p>
164
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-call-signature">clear</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-call-signature">updateTtl</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">seconds</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">;</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a> <span class="tsd-signature-symbol">}</span></h4><p>返回包装后的函数,以及缓存相关的额外方法</p>
165
+ <ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature"><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheargs">Args</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <a class="tsd-signature-type tsd-kind-type-parameter" href="#withcacheresult">Result</a></h4></li></ul></li><li class="tsd-parameter"><h5><span class="tsd-kind-method">clear</span><span class="tsd-signature-symbol">:</span> function</h5><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><span class="tsd-kind-call-signature">clear</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>手动清除缓存</p>
166
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Nickyzj628/utils/blob/8c5e73e217e93604008ce1e410f919a96dbba66f/src/hoc.ts#L98">hoc.ts:98</a></li></ul></aside></div></li></ul></li><li class="tsd-parameter"><h5><span class="tsd-kind-method">updateTtl</span><span class="tsd-signature-symbol">:</span> function</h5><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link"><span class="tsd-kind-call-signature">updateTtl</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">seconds</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>更新 TTL,同时刷新所有未过期缓存的时间</p>
167
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">seconds</span>: <span class="tsd-signature-type">number</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Nickyzj628/utils/blob/8c5e73e217e93604008ce1e410f919a96dbba66f/src/hoc.ts#L101">hoc.ts:101</a></li></ul></aside></div></li></ul></li></ul><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-0">// 异步函数示例</span><br/><span class="hl-6">const</span><span class="hl-2"> </span><span class="hl-7">fetchData</span><span class="hl-2"> = </span><span class="hl-1">withCache</span><span class="hl-2">(</span><span class="hl-6">async</span><span class="hl-2"> </span><span class="hl-6">function</span><span class="hl-2"> (</span><span class="hl-5">url</span><span class="hl-2">: </span><span class="hl-8">string</span><span class="hl-2">) {</span><br/><span class="hl-2"> </span><span class="hl-6">const</span><span class="hl-2"> </span><span class="hl-7">data</span><span class="hl-2"> = </span><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetch</span><span class="hl-2">(</span><span class="hl-5">url</span><span class="hl-2">).</span><span class="hl-1">then</span><span class="hl-2">((</span><span class="hl-5">res</span><span class="hl-2">) </span><span class="hl-6">=&gt;</span><span class="hl-2"> </span><span class="hl-5">res</span><span class="hl-2">.</span><span class="hl-1">json</span><span class="hl-2">());</span><br/><span class="hl-2"> </span><span class="hl-6">this</span><span class="hl-2">.</span><span class="hl-1">setTtl</span><span class="hl-2">(</span><span class="hl-5">data</span><span class="hl-2">.</span><span class="hl-5">expiresIn</span><span class="hl-2">); </span><span class="hl-0">// 根据实际情况调整过期时间</span><br/><span class="hl-2"> </span><span class="hl-4">return</span><span class="hl-2"> </span><span class="hl-5">data</span><span class="hl-2">;</span><br/><span class="hl-2">});</span><br/><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlA</span><span class="hl-2">);</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlA</span><span class="hl-2">); </span><span class="hl-0">// 使用缓存结果</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlB</span><span class="hl-2">);</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlB</span><span class="hl-2">); </span><span class="hl-0">// 使用缓存结果</span><br/><br/><span class="hl-5">fetchData</span><span class="hl-2">.</span><span class="hl-1">clear</span><span class="hl-2">(); </span><span class="hl-0">// 清除缓存</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlA</span><span class="hl-2">); </span><span class="hl-0">// 重新请求</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlB</span><span class="hl-2">); </span><span class="hl-0">// 重新请求</span><br/><br/><span class="hl-0">// 缓存过期前</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">sleep</span><span class="hl-2">();</span><br/><span class="hl-5">fetchData</span><span class="hl-2">.</span><span class="hl-1">updateTtl</span><span class="hl-2">(</span><span class="hl-9">180</span><span class="hl-2">); </span><span class="hl-0">// 更新 ttl 并为所有未过期的缓存续期</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlA</span><span class="hl-2">); </span><span class="hl-0">// 使用缓存结果</span><br/><span class="hl-4">await</span><span class="hl-2"> </span><span class="hl-1">fetchData</span><span class="hl-2">(</span><span class="hl-5">urlB</span><span class="hl-2">); </span><span class="hl-0">// 使用缓存结果</span>
168
+ </code><button type="button">Copy</button></pre>
169
+
170
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/Nickyzj628/utils/blob/8c5e73e217e93604008ce1e410f919a96dbba66f/src/hoc.ts#L42">hoc.ts:42</a></li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@nickyzj2023/utils</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div><script>
171
+ try {
172
+ const generateLinkElement = document.querySelector(".tsd-generator a");
173
+ const link = document.createElement("a");
174
+ Object.assign(link, {
175
+ href: "https://github.com/dmnsgn/typedoc-material-theme",
176
+ target: "_blank",
177
+ rel: "noreferrer",
178
+ innerText: "typedoc-material-theme."
179
+ });
180
+ generateLinkElement.insertAdjacentElement("afterend", link);
181
+ generateLinkElement.insertAdjacentText("afterend", " with ");
182
+ } catch (error) {
183
+
184
+ }
185
+ </script></body></html>