Skip to content

Commit 28b370c

Browse files
committed
modify event code
1 parent fe7bc26 commit 28b370c

File tree

4 files changed

+72
-17
lines changed

4 files changed

+72
-17
lines changed

08-event/01-event-emitter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env node
22

3-
const EventEmitter = require('events').EventEmitter,
3+
const { EventEmitter } = require('events'),
44
log = console.log,
55
e = new EventEmitter();
66

08-event/02-dog.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const EventEmitter = require('events').EventEmitter;
1+
const { EventEmitter } = require('events');
22

33
class Dog extends EventEmitter {
44
constructor(name, energy) {

08-event/07-prd-csm.js

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,34 +24,39 @@ class Queue extends EventEmitter {
2424
#data = [];
2525
}
2626

27-
let queue = new Queue();
28-
2927
class Producer {
30-
constructor() {}
28+
constructor(queue) {
29+
this.#queue = queue;
30+
}
31+
3132
create(data){
3233
log('+ prd create:', data);
33-
queue.write(data);
34+
this.#queue.write(data);
3435
}
36+
37+
#queue = null;
3538
}
3639

3740
class Consumer {
38-
constructor() {}
41+
constructor(queue) {
42+
this.#queue = queue;
43+
}
44+
3945
destroy(){
40-
log('- csm destroy:', queue.read());
46+
log('- csm destroy:', this.#queue.read());
4147
}
48+
49+
#queue = null;
4250
}
4351

44-
let csm = new Consumer();
52+
function main() {
53+
const queue = new Queue(),
54+
prd = new Producer(queue),
55+
csm = new Consumer(queue);
4556

46-
queue.on('data', async()=>{
47-
csm.destroy();
48-
});
57+
queue.on('data', ()=>csm.destroy());
4958

50-
function main() {
51-
const prd = new Producer();
52-
for(let i=0; i<5; i++) {
53-
prd.create(i);
54-
}
59+
for(let i=0; i<5; i++) prd.create(i);
5560
}
5661

5762
main();

08-event/12-bind.js

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#!/usr/bin/env node
2+
3+
// b = a + 10, 当 a 的值变化时,b 的值自动更新
4+
// b 绑定到 a 上了,下面是实现的代码
5+
6+
const { EventEmitter } = require('events');
7+
8+
class A extends EventEmitter {
9+
constructor(value) {
10+
super();
11+
this.#value = value;
12+
this.emit('change');
13+
}
14+
15+
get value() { return this.#value; }
16+
set value(value) {
17+
this.#value = value;
18+
this.emit('change');
19+
}
20+
21+
#value = 0
22+
}
23+
24+
class B {
25+
constructor(obj) {
26+
this.#value = obj.value + 10;
27+
obj.on('change', () => this.#value = obj.value + 10);
28+
}
29+
30+
get value() { return this.#value; }
31+
set value(value) {
32+
this.#value = value;
33+
this.emit('change', value);
34+
}
35+
36+
#value = 0
37+
}
38+
39+
class App {
40+
static main() {
41+
const log = console.log;
42+
const a = new A(10);
43+
const b = new B(a);
44+
log(b.value); // 20
45+
a.value = 20;
46+
log(b.value); // 30
47+
}
48+
}
49+
50+
App.main();

0 commit comments

Comments
 (0)