-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.js
More file actions
76 lines (61 loc) · 1.64 KB
/
test.js
File metadata and controls
76 lines (61 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/*
const {CHANNEL,ACTIONS,SUBJECT} = require("./controller/C")
console.log(CHANNEL)*/
let {Observable} = require("rxjs/Observable")
let {Scheduler, Subject} = require("rxjs")
require("rxjs/Rx");
class Core {
constructor() {
this.state = {};
this.subject = new Subject();
this.subject.subscribe((state) => {
console.log("from constructor");
})
}
updateState(newState) {
this.state = Object.assign({}, this.state, newState);
this.subject.next(this.state);
}
updateBell() {
let mappedSubject = this.subject.map((item) => {
// 사람이 걸어감
if (item.a === 3) {
throw Error()
} else {
return item;
}
});
//불키는 Observable
let delayObservable = Observable.of("finish").delay(7000)
.map((item) => {
console.log("delay observable");
return item;
});
Observable.merge(mappedSubject, delayObservable)
.subscribe((data) => {
console.log(data)
}, (err) => {
console.log("err 2")
//console.log(err)
});
}
}
let core = new Core();
//1초마다 상태 변경
Observable
.interval(1000)
.timeInterval()
.take(10)
.subscribe((item) => {
core.updateState({a: item.value})
//console.log(item)
}, err => {
console.log("err 1")
});
//3초 후에 발생
Observable.of("")
.subscribe((item) => {
core.updateBell();
}, err => {
console.log("err 3")
});