File tree Expand file tree Collapse file tree 2 files changed +61
-0
lines changed Expand file tree Collapse file tree 2 files changed +61
-0
lines changed Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+ const randomChar = ( ) => String
4
+ . fromCharCode ( Math . floor ( ( Math . random ( ) * 25 ) + 97 ) ) ;
5
+
6
+ const subscribe = observer => {
7
+ const observable = { observer } ;
8
+ const timer = setInterval ( ( ) => {
9
+ const char = randomChar ( ) ;
10
+ observer ( char ) ;
11
+ } , 200 ) ;
12
+ observable . complete = ( ) => clearInterval ( timer ) ;
13
+ return observable ;
14
+ } ;
15
+
16
+ // Usage
17
+
18
+ let count = 0 ;
19
+ const observable = subscribe ( observer ) ;
20
+
21
+ function observer ( char ) {
22
+ process . stdout . write ( char ) ;
23
+ count ++ ;
24
+ if ( count > 50 ) {
25
+ observable . complete ( ) ;
26
+ process . stdout . write ( '\n' ) ;
27
+ }
28
+ }
Original file line number Diff line number Diff line change
1
+ 'use strict' ;
2
+
3
+ const randomChar = ( ) => String
4
+ . fromCharCode ( Math . floor ( ( Math . random ( ) * 25 ) + 97 ) ) ;
5
+
6
+ class Observable {
7
+ constructor ( ) {
8
+ this . timer = setInterval ( ( ) => {
9
+ if ( ! this . onData ) return ;
10
+ const char = randomChar ( ) ;
11
+ this . onData ( char ) ;
12
+ } , 200 ) ;
13
+ }
14
+ subscribe ( onData ) {
15
+ this . onData = onData ;
16
+ return this ;
17
+ }
18
+ complete ( ) {
19
+ clearInterval ( this . timer ) ;
20
+ }
21
+ }
22
+
23
+ // Usage
24
+
25
+ let count = 0 ;
26
+ const observable = new Observable ( ) . subscribe ( char => {
27
+ process . stdout . write ( char ) ;
28
+ count ++ ;
29
+ if ( count > 50 ) {
30
+ observable . complete ( ) ;
31
+ process . stdout . write ( '\n' ) ;
32
+ }
33
+ } ) ;
You can’t perform that action at this time.
0 commit comments