Skip to content

Commit d3e83c1

Browse files
authored
feat: add ts solution to lc problem: No.2805 (doocs#1386)
No.2805.Custom Interval
1 parent f87d4b0 commit d3e83c1

File tree

3 files changed

+76
-0
lines changed

3 files changed

+76
-0
lines changed

solution/2800-2899/2805.Custom Interval/README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,32 @@ setTimeout(() => {
7878
<!-- 这里可写当前语言的特殊实现逻辑 -->
7979

8080
```ts
81+
const intervalMap = new Map<number, NodeJS.Timeout>();
82+
83+
function customInterval(fn: Function, delay: number, period: number): number {
84+
let count = 0;
85+
function recursiveTimeout() {
86+
intervalMap.set(
87+
id,
88+
setTimeout(() => {
89+
fn();
90+
count++;
91+
recursiveTimeout();
92+
}, delay + period * count),
93+
);
94+
}
95+
96+
const id = Date.now();
97+
recursiveTimeout();
98+
return id;
99+
}
81100

101+
function customClearInterval(id: number) {
102+
if (intervalMap.has(id)) {
103+
clearTimeout(intervalMap.get(id)!);
104+
intervalMap.delete(id);
105+
}
106+
}
82107
```
83108

84109
<!-- tabs:end -->

solution/2800-2899/2805.Custom Interval/README_EN.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,32 @@ setTimeout(() =&gt; {
7272
### **TypeScript**
7373

7474
```ts
75+
const intervalMap = new Map<number, NodeJS.Timeout>();
76+
77+
function customInterval(fn: Function, delay: number, period: number): number {
78+
let count = 0;
79+
function recursiveTimeout() {
80+
intervalMap.set(
81+
id,
82+
setTimeout(() => {
83+
fn();
84+
count++;
85+
recursiveTimeout();
86+
}, delay + period * count),
87+
);
88+
}
89+
90+
const id = Date.now();
91+
recursiveTimeout();
92+
return id;
93+
}
7594

95+
function customClearInterval(id: number) {
96+
if (intervalMap.has(id)) {
97+
clearTimeout(intervalMap.get(id)!);
98+
intervalMap.delete(id);
99+
}
100+
}
76101
```
77102

78103
<!-- tabs:end -->
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
const intervalMap = new Map<number, NodeJS.Timeout>();
2+
3+
function customInterval(fn: Function, delay: number, period: number): number {
4+
let count = 0;
5+
function recursiveTimeout() {
6+
intervalMap.set(
7+
id,
8+
setTimeout(() => {
9+
fn();
10+
count++;
11+
recursiveTimeout();
12+
}, delay + period * count),
13+
);
14+
}
15+
16+
const id = Date.now();
17+
recursiveTimeout();
18+
return id;
19+
}
20+
21+
function customClearInterval(id: number) {
22+
if (intervalMap.has(id)) {
23+
clearTimeout(intervalMap.get(id)!);
24+
intervalMap.delete(id);
25+
}
26+
}

0 commit comments

Comments
 (0)