Skip to content

Commit 33a88e4

Browse files
authored
챕터 9 추가 (#79)
1 parent 9b95c6c commit 33a88e4

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

챕터_9/변수미.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
비동기 자바스크립트 프로그래밍은 브라우저가 이벤트에 응답하여 다른 코드를 실행하는 동안, 백그라운드에서 오랜 시간이 걸리는 작업을 수행하게 해줍니다.
2+
3+
## 9.1 비동기 프로그래밍
4+
5+
자바스크립트에서 **동기 코드는 블로킹 방식**으로 실행됩니다.
6+
이는 코드가 순서대로 한 번에 한 문장씩 실행됨을 의미합니다
7+
8+
반면에 **비동기 코드는** **논블로킹 방식**으로 실행됩니다.
9+
즉, 자바스크립트 엔진은 현 재 실행 중인 코드가 다른 작업을 기다리는 동안 백그라운드에서 해당 비동기 코드를 실행할 수 있습니다.
10+
비동기 함수를 호출하면, 함수 내부의 코드가 백그라운드에서 실행되며 호출자 에게 즉시 결과가 반환됩니다.
11+
12+
> 비동기 코드는 오래 실행되는 작업을 수행할 때 유용합니다.
13+
14+
동기 함수
15+
16+
```js
17+
function synchronousFunction() {
18+
// 동기 함수 동작
19+
}
20+
21+
synchronousFunction();
22+
// 이 줄이 오기 전에 함수 내부의 코드를 실행
23+
```
24+
25+
비동기 함수
26+
27+
```js
28+
function asynchronousFunction() {
29+
// 비동기 함수 동작
30+
}
31+
asynchronousFunction();
32+
// 함수 내부의 코드는 백그라운드에서 실행되며 // 이 줄로 제어권을 반환
33+
```
34+
35+
## 9.2 배경(콜백함수)
36+
37+
자바스크립트에서 콜백 함수는 다른 함수에 인수로서 전달되어, 비동기 작업이 완료된 후 실행됩니다.
38+
39+
👎 '콜백 지옥'으로 불리는 상황을 초래할 수 있습니다.
40+
41+
## 9.3 프로미스 패턴
42+
43+
프로미스는 비동기 작업의 결과를 나타내는 객체로, pending, fulfilled, rejected의 세 가지 상태를 가질 수 있습니다
44+
45+
```js
46+
function makeRequest(url) {
47+
return new Promise((resolve, reject) => {
48+
fetch(url)
49+
then(response => response.json()) .then(data => resolve(data))
50+
.catch(error => reject(error));
51+
});
52+
}
53+
54+
makeRequest('http://example.com/’)
55+
.then(data => console.log(data))
56+
.catch(error => console.error(error));
57+
```
58+
59+
👍 콜백보다 체계적이고 가독성이 높은 방법으로 비동기 작업을 처리할 수 있습니다.
60+
61+
## 9-4 async/await 패턴
62+
63+
비동기 코드를 마치 동기 코드처럼 작성할 수 있게 해주는 자바스크립트의 기능
64+
프로미스를 기반으로 구축되었으며, 비동기 코드 작업을 보다 쉽고 간결하게 만들어 줍니다.
65+
66+
```js
67+
async function makeRequest() {
68+
try {
69+
const response = await fetch("http://example.com/");
70+
const data = await response.json();
71+
console.log(data);
72+
} catch (error) {
73+
console.error(error);
74+
}
75+
}
76+
```

0 commit comments

Comments
 (0)