Skip to content

Commit

Permalink
챕터 9 (#70)
Browse files Browse the repository at this point in the history
  • Loading branch information
hyesungoh authored Nov 21, 2024
1 parent ae1957b commit 3c0b8bc
Showing 1 changed file with 67 additions and 0 deletions.
67 changes: 67 additions & 0 deletions 챕터_9/오혜성.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# 비동기 프로그래밍 패턴

> 저를 포함해 다 아시는 문법들을 알려주는 챕터였다고 생각됨
- 비동기 코드를 마치 동기 코드처럼 보이도록 작성할 수 있어 코드의 가독성과 이해도가 높아진다
- async/await 문법의 이유

> 어싱크 어웨잇의 처음은 F#이라는 언어라네요
> 이후에 C#, 파이썬, 타입스크립트, 자바스크립트 순으로 도입되었대요
## 비동기 반복

- for await of

```js
async function* repeat() {
yield 'Hello';
yield 'World';
}

async function main() {
for await (const word of repeat()) {
console.log(word);
}
}
```

## 재시도

```js
async function retry() {
let attempt = 0;

while (attempt < 3) {
try {
return await fetch('https://api.github.com');
} catch (err) {
attempt++;
}
}

throw new Error('Failed to fetch');
}
```

## 데코레이터

```js
const asyncLogger = (fn) => {
return async function(...args) {
console.log('Start: ', fn.name);
const result = await fn(...args);
console.log('End: ', fn.name);
return result;
};
};

const main = asyncLogger(async function main() {
return await new Promise(resolve => setTimeout(() => resolve('user'), 1000));
});

main();
```

> 책에서 나오는 `@asyncLogger` 데코레이터는 안됨 ㅋㅋㅋ 왜 적어둔거야
> > 자바스크립트에서의 데코레이터는 현재 스테이지 3
> > https://github.com/tc39/proposal-decorator-metadata

0 comments on commit 3c0b8bc

Please sign in to comment.