You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/11-async/05-promise-api/article.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,7 +39,7 @@ URL이 담긴 배열을 `fetch`를 써서 처리하는 예시를 살펴봅시다
39
39
```js run
40
40
let urls = [
41
41
'https://api.github.com/users/iliakan',
42
-
'https://api.github.com/users/remy',
42
+
'https://api.github.com/users/Violet-Bora-Lee',
43
43
'https://api.github.com/users/jeresig'
44
44
];
45
45
@@ -53,10 +53,10 @@ Promise.all(requests)
53
53
));
54
54
```
55
55
56
-
GitHub 유저네임이 담긴 배열을 사용해 사용자 정보를 가져오는 예시를 살펴봅시다(id를 기준으로 장바구니 목록을 불러올 때도 같은 로직을 사용할 수 있습니다).
56
+
GitHub 유저네임이 담긴 배열을 사용해 사용자 정보를 가져오는 예시를 살펴봅시다(실무에서 id를 기준으로 장바구니 목록을 불러올 때도 같은 로직을 사용할 수 있습니다).
57
57
58
58
```js run
59
-
let names = ['iliakan', 'remy', 'jeresig'];
59
+
let names = ['iliakan', 'Violet-Bora-Lee', 'jeresig'];
60
60
61
61
let requests =names.map(name=>fetch(`https://api.github.com/users/${name}`));
62
62
@@ -92,15 +92,15 @@ Promise.all([
92
92
2초 후 두 번째 프라미스가 거부되면서 `Promise.all` 전체가 거부되고, `.catch`가 실행됩니다. 거부 에러는 `Promise.all` 전체의 결과가 됩니다.
93
93
94
94
```warn header="에러가 발생하면 다른 프라미스는 무시됩니다."
95
-
프라미스가 하나라도 거부되면 `Promise.all`은 즉시 거부되고 배열에 저장된 다른 프라미스의 결과는 완전히 잊힙니다. 이행된 프라미스의 결과도 무시되죠.
95
+
프라미스가 하나라도 거부되면 `Promise.all`은 즉시 거부되고 배열에 저장된 다른 프라미스의 결과는 완전히 무시됩니다. 이행된 프라미스의 결과도 무시되죠.
96
96
97
97
`fetch`를 사용해 호출 여러 개를 만들면, 그중 하나가 실패하더라도 호출은 계속 일어납니다. 그렇더라도 `Promise.all`은 다른 호출을 더는 신경 쓰지 않습니다. 프라미스가 처리되긴 하겠지만 그 결과는 무시됩니다.
98
98
99
-
프라미스에는 '취소'라는 개념이 없어서 `Promise.all`도 프라미스를 취소하지 않습니다. [또 다른 챕터](info:fetch-abort)에서 배울 `AbortController`를 사용하면 프라미스 취소가 가능하긴 하지만, 프라미스 API는 아닙니다.
99
+
프라미스에는 '취소'라는 개념이 없어서 `Promise.all`도 프라미스를 취소하지 않습니다. [또 다른 챕터](info:fetch-abort)에서 배울 `AbortController`를 사용하면 프라미스 취소가 가능하긴 하지만, `AbortController`는 프라미스 API는 아닙니다.
100
100
```
101
101
102
102
````smart header="`이터러블 객체`가 아닌 '일반' 값도 `Promise.all(iterable)`에 넘길 수 있습니다."
103
-
`Promise.all(...)`은 대개 프라미스가 요소인 이러터블 객체(대부분 배열)를 받습니다. 그런데 프라미스가 아닌 객체가 배열을 구성하면, 요소가 '그대로' 결과 배열로 전달됩니다.
103
+
`Promise.all(...)`은 대개 프라미스가 요소인 이러터블 객체(대부분 배열)를 받습니다. 그런데 요소가 프라미스가 아닌 객체일 경우엔 요소 '그대로' 결과 배열에 전달됩니다.
104
104
105
105
아래 예시의 결과는 `[1, 2, 3]`입니다.
106
106
@@ -114,7 +114,7 @@ Promise.all([
114
114
]).then(alert); // 1, 2, 3
115
115
```
116
116
117
-
이미 결과를 알고 있는 값은 `Promise.all`로 그냥 전달하면 됩니다.
117
+
이미 결과를 알고 있는 값은 이 특징을 이용해 `Promise.all`에 그냥 전달하면 되죠.
118
118
````
119
119
120
120
## Promise.allSettled
@@ -136,14 +136,14 @@ Promise.all([
136
136
- 응답이 성공할 경우 -- `{status:"fulfilled", value:result}`
137
137
- 에러가 발생한 경우 -- `{status:"rejected", reason:error}`
138
138
139
-
`fetch`를 사용해 여러 사람의 정보를 가져오고 있다고 해봅시다. 여러 요청 중 하나가 실패해도 다른 요청 결과는 여전히 있어야 합니다.
139
+
`fetch`를 사용해 여러 사람의 정보를 가져오고 있다고 해봅시다. 여러 요청 중 하나가 실패해도 다른 요청 결과는 여전히 필요합니다.
140
140
141
141
이럴 때 `Promise.allSettled`를 사용할 수 있습니다.
142
142
143
143
```js run
144
144
let urls = [
145
145
'https://api.github.com/users/iliakan',
146
-
'https://api.github.com/users/remy',
146
+
'https://api.github.com/users/Violet-Bora-Lee',
147
147
'https://no-such-url'
148
148
];
149
149
@@ -218,7 +218,7 @@ Promise.race([
218
218
첫 번째 프라미스가 가장 빨리 처리상태가 되기 때문에 첫 번째 프라미스의 결과가 result 값이 됩니다. 이렇게 `Promise.race`를 사용하면 '경주(race)의 승자'가 나타난 순간 다른 프라미스의 결과 또는 에러는 무시됩니다.
219
219
220
220
221
-
## Promise.resolve/reject
221
+
## Promise.resolve와 Promise.reject
222
222
223
223
프라미스 메서드 `Promise.resolve`와 `Promise.reject`는 `async/await` 문법([뒤에서](info:async-await) 다룸)이 생긴 후로 쓸모없어졌기 때문에 근래에는 거의 사용하지 않습니다.
0 commit comments