1313``` js
1414let range = {
1515 from: 1 ,
16- to: 5 ,
16+ to: 5
1717};
1818```
1919
@@ -142,12 +142,12 @@ let range = {
142142전개 구문은 일반 이터레이터가 필요로 하므로 아래와 같은 코드는 동작하지 않습니다.
143143
144144``` js
145- alert ([... range]); // Symbol.iterator가 없기 때문에 에러 발생
145+ alert ( [... range] ); // Symbol.iterator가 없기 때문에 에러 발생
146146```
147147
148148전개 구문은 ` await ` 가 없는 ` for..of ` 와 마찬가지로, ` Symbol.asyncIterator ` 가 아닌 ` Symbol.iterator ` 를 찾기 때문에 에러가 발생하는 것은 당연합니다.
149149
150- `````
150+ ````
151151
152152## 제너레이터 복습
153153
@@ -194,13 +194,13 @@ let range = {
194194 to: 5,
195195
196196 *[Symbol.iterator]() { // [Symbol.iterator]: function*()를 짧게 줄임
197- for (let value = this.from; value <= this.to; value++) {
197+ for(let value = this.from; value <= this.to; value++) {
198198 yield value;
199199 }
200- },
200+ }
201201};
202202
203- for (let value of range) {
203+ for(let value of range) {
204204 alert(value); // 1, 2, 3, 4, 5
205205}
206206```
@@ -260,7 +260,7 @@ result = await generator.next(); // result = {value: ..., done: true/false}
260260```
261261
262262이것이 async 제너레이터가 `for await...of`와 함께 동작하는 이유입니다.
263- `````
263+ ````
264264
265265### async 이터러블 range
266266
@@ -340,19 +340,18 @@ async function* fetchCommits(repo) {
340340 while (url) {
341341 const response = await fetch (url, {
342342 // (1)
343- headers: { " User-Agent" : " Our script" }, // GitHub는 모든 요청에 user-agent 헤더를 강제 합니다.
343+ headers: { ' User-Agent' : ' Our script' }, // GitHub는 모든 요청에 user-agent 헤더를 강제 합니다.
344344 });
345345
346346 const body = await response .json (); // (2) 응답은 JSON 형태로 옵니다(커밋이 담긴 배열).
347347
348348 // (3) 헤더에 담긴 다음 페이지를 나타내는 URL을 추출합니다.
349- let nextPage = response .headers .get (" Link" ).match (/ <(. *? )>; rel="next"/ );
349+ let nextPage = response .headers .get (' Link' ).match (/ <(. *? )>; rel="next"/ );
350350 nextPage = nextPage? .[1 ];
351351
352352 url = nextPage;
353353
354- for (let commit of body) {
355- // (4) 페이지가 끝날 때까지 커밋을 하나씩 반환(yield)합니다.
354+ for (let commit of body) { // (4) 페이지가 끝날 때까지 커밋을 하나씩 반환(yield)합니다.
356355 yield commit;
357356 }
358357 }
@@ -375,7 +374,7 @@ async function* fetchCommits(repo) {
375374 let count = 0;
376375
377376 for await (const commit of fetchCommits(
378- " javascript-tutorial/en.javascript.info" ,
377+ ' javascript-tutorial/en.javascript.info' ,
379378 )) {
380379 console.log(commit.author.login);
381380
@@ -401,17 +400,17 @@ async function* fetchCommits(repo) {
401400
402401일반 이터레이터와 async 이터레이터의 문법 차이는 다음과 같습니다.
403402
404- | | iterable | async iterable |
405- | -------------------------- | ---------------------------- - | ------------------------------------------------ |
406- | iterator를 반환하는 메서드 | ` Symbol.iterator` | ` Symbol.asyncIterator` |
407- | ` next()` 가 반환하는 값 | ` {value:…, done: true/false}` | ` {value:…, done: true/false}` 를 감싸는 ` Promise` |
403+ | | iterable | async iterable |
404+ | ------ - | ---------- - | ---------------- - |
405+ | iterator를 반환하는 메서드 | ` Symbol.iterator` | ` Symbol.asyncIterator` |
406+ | ` next()` 가 반환하는 값 | ` {value:…, done: true/false}` | ` {value:…, done: true/false}` 를 감싸는 ` Promise` |
408407
409408일반 제너레이터와 async 제너레이터의 문법 차이는 다음과 같습니다.
410409
411- | | generators | async generator |
412- | ---------------------- | ---------------------------- - | ------------------------------------------------ |
413- | 선언 | ` function*` | ` async function*` |
414- | ` next()` 가 반환하는 값 | ` {value:…, done: true/false}` | ` {value:…, done: true/false}` 를 감싸는 ` Promise` |
410+ | | generators | async generator |
411+ | ------ - | ---------- - | ---------------- - |
412+ | 선언 | ` function*` | ` async function*` |
413+ | ` next()` 가 반환하는 값 | ` {value:…, done: true/false}` | ` {value:…, done: true/false}` 를 감싸는 ` Promise` |
415414
416415웹 개발을 하다 보면 띄엄띄엄 들어오는 데이터 스트림을 다뤄야 하는 경우가 자주 생깁니다. 용량이 큰 파일을 다운로드하거나 업로드 할 때와 같이 말이죠.
417416
0 commit comments