Skip to content

Commit

Permalink
chapter 9 (#75)
Browse files Browse the repository at this point in the history
  • Loading branch information
WooWan authored Dec 20, 2024
1 parent 58c25b0 commit ac1b54c
Showing 1 changed file with 78 additions and 0 deletions.
78 changes: 78 additions & 0 deletions 챕터_9/우창완.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# 9장 비동기 프로그래밍 패턴



gpt 에 Promise 패턴 몇 개 만들어줘 ~ 입력하고 그래로 복붙한 것 같다.



간혹 callback 함수를 Promise로 래핑하는 경우:

```js
// 기존 레거시 콜백 함수, 이미 여러 함수가 이 함수를 사용하고 있어서 변경할 수 없을 경우
function readFileCallback(filename, callback) {
fs.readFile(filename, 'utf8', (err, data) => {
if (err) {
callback(err, null);
return;
}
const processedData = data.toUpperCase();
callback(null, processedData);
});
}
```



* Promise로 직접 래핑하기

```js
//1. Promise로 직접 래핑
function readFilePromise(filename){
return new Promise((resolve, reject) => {
readFileCallback(filename, (err, data) => {
if(err){
reject(err)
return
}
resolve(data);
})
})
}
```



* promisify 유틸함수 사용

```js
// Promise로 래핑하는 방법 2: 유틸리티 함수 사용
function promisify(fn) {
return function (...args) {
return new Promise((resolve, reject) => {
fn(...args, (err, data) => {
if (err) {
reject(err);
return;
}
resolve(data);
});
});
};
}

// 유틸리티 함수를 사용해서 래핑
const readFilePromisified = promisify(readFileCallback);
```



* node 환경이라면, promisify 딸깍할 수 있다

```js
import { promisify } from "node:util"

const readFilePromisified2 = util.promisify(readFileCallback);
```


0 comments on commit ac1b54c

Please sign in to comment.