File tree Expand file tree Collapse file tree 2 files changed +18
-21
lines changed
packages/use-request/src/utils Expand file tree Collapse file tree 2 files changed +18
-21
lines changed Original file line number Diff line number Diff line change @@ -6,28 +6,25 @@ import isOnline from './isOnline'
66
77type Listener = ( ) => void
88
9- const listeners : Listener [ ] = [ ]
9+ const listeners = new Set < Listener > ( ) ;
1010
1111function subscribe ( listener : Listener ) {
12- listeners . push ( listener )
12+ listeners . add ( listener ) ;
13+
1314 return function unsubscribe ( ) {
14- const index = listeners . indexOf ( listener )
15- if ( index > - 1 ) {
16- listeners . splice ( index , 1 )
17- }
18- }
15+ listeners . has ( listener ) && listeners . delete ( listener ) ;
16+ } ;
1917}
2018
2119if ( isBrowser ) {
2220 const revalidate = ( ) => {
2321 if ( ! isDocumentVisible ( ) || ! isOnline ( ) ) return
24- for ( let i = 0 ; i < listeners . length ; i ++ ) {
25- const listener = listeners [ i ]
26- listener ( )
27- }
22+ listeners . forEach ( listener => {
23+ listener ( ) ;
24+ } )
2825 }
29- window . addEventListener ( 'visibilitychange' , revalidate , false )
30- window . addEventListener ( 'focus' , revalidate , false )
26+ window . addEventListener ( 'visibilitychange' , revalidate , false ) ;
27+ window . addEventListener ( 'focus' , revalidate , false ) ;
3128}
3229
3330export default subscribe
Original file line number Diff line number Diff line change 11import isDocumentVisible from "./isDocumentVisible" ;
22import { canUseDom } from "./utils" ;
33
4- const listeners : any [ ] = [ ] ;
4+ type Listener = ( ) => void ;
55
6- function subscribe ( listener : ( ) => void ) {
7- listeners . push ( listener ) ;
6+ const listeners = new Set < Listener > ( ) ;
7+
8+ function subscribe ( listener : Listener ) {
9+ listeners . add ( listener ) ;
810 return function unsubscribe ( ) {
9- const index = listeners . indexOf ( listener ) ;
10- listeners . splice ( index , 1 ) ;
11+ listeners . has ( listener ) && listeners . delete ( listener ) ;
1112 } ;
1213}
1314
1415if ( canUseDom ( ) ) {
1516 const revalidate = ( ) => {
1617 if ( ! isDocumentVisible ( ) ) return ;
17- for ( let i = 0 ; i < listeners . length ; i ++ ) {
18- const listener = listeners [ i ] ;
18+ listeners . forEach ( listener => {
1919 listener ( ) ;
20- }
20+ } ) ;
2121 } ;
2222 window . addEventListener ( "visibilitychange" , revalidate , false ) ;
2323}
You can’t perform that action at this time.
0 commit comments