File tree Expand file tree Collapse file tree 3 files changed +76
-0
lines changed
solution/2800-2899/2805.Custom Interval Expand file tree Collapse file tree 3 files changed +76
-0
lines changed Original file line number Diff line number Diff line change @@ -78,7 +78,32 @@ setTimeout(() => {
78
78
<!-- 这里可写当前语言的特殊实现逻辑 -->
79
79
80
80
``` 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
+ }
81
100
101
+ function customClearInterval(id : number ) {
102
+ if (intervalMap .has (id )) {
103
+ clearTimeout (intervalMap .get (id )! );
104
+ intervalMap .delete (id );
105
+ }
106
+ }
82
107
```
83
108
84
109
<!-- tabs:end -->
Original file line number Diff line number Diff line change @@ -72,7 +72,32 @@ setTimeout(() => {
72
72
### ** TypeScript**
73
73
74
74
``` 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
+ }
75
94
95
+ function customClearInterval(id : number ) {
96
+ if (intervalMap .has (id )) {
97
+ clearTimeout (intervalMap .get (id )! );
98
+ intervalMap .delete (id );
99
+ }
100
+ }
76
101
```
77
102
78
103
<!-- tabs:end -->
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments