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