Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 12b970f

Browse filesBrowse files
committed
Update JavaScript examples
1 parent 5b06904 commit 12b970f
Copy full SHA for 12b970f

File tree

Expand file treeCollapse file tree

7 files changed

+115
-86
lines changed
Filter options
Expand file treeCollapse file tree

7 files changed

+115
-86
lines changed

‎JavaScript/1-function.js

Copy file name to clipboard
+20-14Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,36 @@
11
'use strict';
22

3-
const randomChar = () => String
4-
.fromCharCode(Math.floor((Math.random() * 25) + 97));
3+
const randomChar = () =>
4+
String.fromCharCode(Math.floor(Math.random() * 25 + 97));
55

66
const subscribe = (observer) => {
7-
const observable = { observer };
8-
setInterval(() => {
7+
let timer = setInterval(() => {
98
const char = randomChar();
109
observer(char);
1110
}, 200);
12-
return observable;
11+
const unsubscribe = () => {
12+
if (!timer) return;
13+
clearInterval(timer);
14+
timer = null;
15+
};
16+
return { unsubscribe };
1317
};
1418

1519
// Usage
1620

17-
let count = 0;
18-
19-
const observer = (char) => {
20-
process.stdout.write(char);
21-
count++;
22-
if (count > 50) {
23-
process.stdout.write('\n');
24-
process.exit(0);
25-
}
21+
const createObserver = () => {
22+
let count = 0;
23+
return (char) => {
24+
process.stdout.write(char);
25+
count++;
26+
if (count > 50) {
27+
process.stdout.write('\n');
28+
process.exit(0);
29+
}
30+
};
2631
};
2732

33+
const observer = createObserver();
2834
const observable = subscribe(observer);
2935

3036
console.dir({ observer, observable });

‎JavaScript/2-class.js

Copy file name to clipboard
+24-15Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,46 @@
11
'use strict';
22

3-
const randomChar = () => String
4-
.fromCharCode(Math.floor((Math.random() * 25) + 97));
3+
const randomChar = () =>
4+
String.fromCharCode(Math.floor(Math.random() * 25 + 97));
55

66
class Observable {
7-
constructor() {
7+
constructor(interval) {
88
this.observer = null;
9-
setInterval(() => {
9+
this.timer = setInterval(() => {
1010
if (!this.observer) return;
1111
const char = randomChar();
1212
this.observer(char);
13-
}, 200);
13+
}, interval);
1414
}
1515

1616
subscribe(observer) {
1717
this.observer = observer;
1818
return this;
1919
}
20+
21+
unsubscribe() {
22+
if (!this.timer) return;
23+
clearInterval(this.timer);
24+
this.timer = null;
25+
}
2026
}
2127

2228
// Usage
2329

24-
let count = 0;
25-
26-
const observer = (char) => {
27-
process.stdout.write(char);
28-
count++;
29-
if (count > 50) {
30-
process.stdout.write('\n');
31-
process.exit(0);
32-
}
30+
const createObserver = () => {
31+
let count = 0;
32+
return (char) => {
33+
process.stdout.write(char);
34+
count++;
35+
if (count > 50) {
36+
process.stdout.write('\n');
37+
process.exit(0);
38+
}
39+
};
3340
};
3441

35-
const observable = new Observable().subscribe(observer);
42+
const observer = createObserver();
43+
const observable = new Observable(200);
44+
observable.subscribe(observer);
3645

3746
console.dir({ observer, observable });

‎JavaScript/3-pure-oop.js

Copy file name to clipboardExpand all lines: JavaScript/3-pure-oop.js
+8-5Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,22 @@ class Observer {
3333

3434
// Usage
3535

36-
const randomChar = () => String
37-
.fromCharCode(Math.floor((Math.random() * 25) + 97));
36+
const randomChar = () =>
37+
String.fromCharCode(Math.floor(Math.random() * 25 + 97));
3838

3939
class CharStream extends Observable {
40-
constructor() {
40+
constructor(interval) {
4141
super();
4242
this.timer = setInterval(() => {
4343
const char = randomChar();
4444
this.notify(char);
45-
}, 200);
45+
}, interval);
4646
}
4747

4848
complete() {
49+
if (!this.timer) return;
4950
clearInterval(this.timer);
51+
this.timer = null;
5052
}
5153
}
5254

@@ -68,5 +70,6 @@ class CharStreamObserver extends Observer {
6870
}
6971

7072
const observer = new CharStreamObserver();
71-
const observable = new CharStream().subscribe(observer);
73+
const observable = new CharStream(200);
74+
observable.subscribe(observer);
7275
console.dir({ observer, observable });

‎JavaScript/4-emitter.js

Copy file name to clipboardExpand all lines: JavaScript/4-emitter.js
+21-16Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,41 @@ const { EventEmitter } = require('node:events');
44

55
// Usage
66

7-
const randomChar = () => String
8-
.fromCharCode(Math.floor((Math.random() * 25) + 97));
7+
const randomChar = () =>
8+
String.fromCharCode(Math.floor(Math.random() * 25 + 97));
99

10-
class CharStream { // Observable
11-
constructor(ee) {
10+
class CharStream {
11+
// Observable
12+
constructor(ee, interval) {
1213
this.timer = setInterval(() => {
1314
const char = randomChar();
1415
ee.emit('char', char);
15-
}, 200);
16+
}, interval);
1617
}
1718

1819
complete() {
20+
if (!this.timer) return;
1921
clearInterval(this.timer);
22+
this.timer = null;
2023
}
2124
}
2225

2326
const ee = new EventEmitter();
24-
const observable = new CharStream(ee);
25-
26-
let count = 0;
27-
28-
const observer = (char) => {
29-
process.stdout.write(char);
30-
count++;
31-
if (count > 50) {
32-
observable.complete();
33-
process.stdout.write('\n');
34-
}
27+
const observable = new CharStream(ee, 200);
28+
29+
const createObserver = () => {
30+
let count = 0;
31+
return (char) => {
32+
process.stdout.write(char);
33+
count++;
34+
if (count > 50) {
35+
process.stdout.write('\n');
36+
process.exit(0);
37+
}
38+
};
3539
};
3640

41+
const observer = createObserver();
3742
ee.on('char', observer);
3843

3944
console.dir({ observer, observable });

‎JavaScript/5-operators.js

Copy file name to clipboardExpand all lines: JavaScript/5-operators.js
+14-12Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,29 @@ class Observable {
3939

4040
// Usage
4141

42-
const randomChar = () => String
43-
.fromCharCode(Math.floor((Math.random() * 25) + 97));
42+
const randomChar = () =>
43+
String.fromCharCode(Math.floor(Math.random() * 25 + 97));
4444

4545
const observable = new Observable()
4646
.filter((char) => !'aeiou'.includes(char))
4747
.map((char) => char.toUpperCase());
4848

49-
const timer = setInterval(() => {
49+
setInterval(() => {
5050
const char = randomChar();
5151
observable.notify(char);
5252
}, 200);
5353

54-
let count = 0;
55-
56-
const observer = (char) => {
57-
process.stdout.write(char);
58-
count++;
59-
if (count > 50) {
60-
clearInterval(timer);
61-
process.stdout.write('\n');
62-
}
54+
const createObserver = () => {
55+
let count = 0;
56+
return (char) => {
57+
process.stdout.write(char);
58+
count++;
59+
if (count > 50) {
60+
process.stdout.write('\n');
61+
process.exit(0);
62+
}
63+
};
6364
};
6465

66+
const observer = createObserver();
6567
observable.subscribe(observer);

‎JavaScript/6-pipe.js

Copy file name to clipboardExpand all lines: JavaScript/6-pipe.js
+14-12Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,29 @@ const map = (callback) => ({ name: 'map', fn: callback });
3939

4040
// Usage
4141

42-
const randomChar = () => String
43-
.fromCharCode(Math.floor((Math.random() * 25) + 97));
42+
const randomChar = () =>
43+
String.fromCharCode(Math.floor(Math.random() * 25 + 97));
4444

4545
const source = new Observable();
4646

4747
const destination = source.pipe(
4848
filter((char) => !'aeiou'.includes(char)),
49-
map((char) => char.toUpperCase())
49+
map((char) => char.toUpperCase()),
5050
);
5151

52-
let count = 0;
53-
54-
const observer = (char) => {
55-
process.stdout.write(char);
56-
count++;
57-
if (count > 50) {
58-
process.stdout.write('\n');
59-
process.exit(0);
60-
}
52+
const createObserver = () => {
53+
let count = 0;
54+
return (char) => {
55+
process.stdout.write(char);
56+
count++;
57+
if (count > 50) {
58+
process.stdout.write('\n');
59+
process.exit(0);
60+
}
61+
};
6162
};
6263

64+
const observer = createObserver();
6365
destination.subscribe(observer);
6466

6567
setInterval(() => {

‎JavaScript/7-subscriber.js

Copy file name to clipboardExpand all lines: JavaScript/7-subscriber.js
+14-12Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ const map = (callback) => ({ name: 'map', fn: callback });
4040

4141
// Usage
4242

43-
const randomChar = () => String
44-
.fromCharCode(Math.floor((Math.random() * 25) + 97));
43+
const randomChar = () =>
44+
String.fromCharCode(Math.floor(Math.random() * 25 + 97));
4545

4646
const source = new Observable((subscriber) => {
4747
setInterval(() => {
@@ -52,20 +52,22 @@ const source = new Observable((subscriber) => {
5252

5353
const destination = source.pipe(
5454
filter((char) => !'aeiou'.includes(char)),
55-
map((char) => char.toUpperCase())
55+
map((char) => char.toUpperCase()),
5656
);
5757

58-
let count = 0;
59-
60-
const observer = (char) => {
61-
process.stdout.write(char);
62-
count++;
63-
if (count > 50) {
64-
process.stdout.write('\n');
65-
process.exit(0);
66-
}
58+
const createObserver = () => {
59+
let count = 0;
60+
return (char) => {
61+
process.stdout.write(char);
62+
count++;
63+
if (count > 50) {
64+
process.stdout.write('\n');
65+
process.exit(0);
66+
}
67+
};
6768
};
6869

70+
const observer = createObserver();
6971
destination.subscribe(observer);
7072

7173
console.dir({ observer, source, destination });

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.