-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCallback.js
More file actions
56 lines (52 loc) · 1.21 KB
/
Callback.js
File metadata and controls
56 lines (52 loc) · 1.21 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
const conditionA = false
const conditionB = false
function myCallback(successCb, failCb) {
if (!conditionA) {
failCb({
name: "Condition A failed",
message: ":(",
})
} else if (!conditionB) {
failCb({
name: "Condition B failed",
message: "OMG",
})
} else {
successCb("SUCCESS!")
}
}
// Promise는 성공 시, 실패 시 수행할 콜백 함수의 명칭을 resolve, reject로 통일.
function myPromise() {
return new Promise((resolve, reject) => {
if (!conditionA) {
reject({
name: "Condition A failed",
message: ":(",
})
} else if (!conditionB) {
reject({
name: "Condition B failed",
message: "OMG",
})
} else {
resolve("SUCCESS!")
}
})
}
myCallback(
(message) => {
console.log("Success case: ", message)
},
(error) => {
console.log(error.name, error.message)
}
)
// then, catch, finally 메서드 인터페이스 통해 콜백 함수를 등록.
// 특히 nested callback을 promise chaining을 통해 가독성 좋게 작성 가능.
myPromise()
.then((message) => {
console.log("Success case: ", message)
})
.catch((error) => {
console.log(error.name, error.message)
})