File tree Expand file tree Collapse file tree 2 files changed +45
-0
lines changed Expand file tree Collapse file tree 2 files changed +45
-0
lines changed Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+ ( async ( ) => {
4
+ let k = 0 ;
5
+ const timer = setInterval ( ( ) => k ++ , 10 ) ;
6
+ const numbers = new Array ( 10000000 ) . fill ( 1 ) ;
7
+ let i = 0 ;
8
+ for await ( const number of numbers ) {
9
+ if ( number ) i ++ ;
10
+ }
11
+ clearInterval ( timer ) ;
12
+ console . dir ( { i, k } ) ;
13
+ } ) ( ) ;
14
+
Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+ class AsyncArray extends Array {
4
+ [ Symbol . asyncIterator ] ( ) {
5
+ let i = 0 ;
6
+ return {
7
+ next : ( ) => new Promise ( resolve => {
8
+ setTimeout ( ( ) => resolve ( {
9
+ value : this [ i ] ,
10
+ done : i ++ === this . length
11
+ } ) , 0 ) ;
12
+ } )
13
+ } ;
14
+ }
15
+ }
16
+
17
+ // Usage
18
+
19
+ let k = 0 ;
20
+
21
+ const timer = setInterval ( ( ) => k ++ , 10 ) ;
22
+
23
+ ( async ( ) => {
24
+ const numbers = new AsyncArray ( 10000 ) . fill ( 1 ) ;
25
+ let i = 0 ;
26
+ for await ( const number of numbers ) {
27
+ if ( number ) i ++ ;
28
+ }
29
+ clearInterval ( timer ) ;
30
+ console . dir ( { i, k } ) ;
31
+ } ) ( ) ;
You can’t perform that action at this time.
0 commit comments