Promise는 어떤 건가요?
TypeScript
2024. 5. 22. 14:31
서론
Promise는 JavaScript의 비동기 프로그래밍을 도와주는 라이브러리다.
현재는 JavaScript V8엔진에 기본 탑재되어 있다. (즉 Node.js에서도 활용할 수 있다.)
IE10 이전 버전에서는 작동하지 않는데 Babel과 Promise polyfill을 통해 비슷하게 작동하도록 만들 수 있다.
본론
그렇다면 어떻게 Promise가 비동기 작동을 돕는걸까?
간단한 Wait 함수를 살펴보자.
const wait = (time: number): Promise<void> => new Promise((resolve, reject) => {
setTimeout(() => resolve(), time);
});
wait(4000).then(() => console.log("done"))
이 코드를 실행한다면 4초 후 Promise 객체의 resolve 함수가 실행되며 .then() 절로 넘어가 done
가 출력된다.
Promise 객체의 resolve 함수는 함수가 정상적으로 실행되었음을 의미한다. 여기에 변수를 담을 수 있다.
reject 함수는 에러가 발생했음을 의미한다. 마찬가지로 변수를 담을 수 있다.
import fs from 'fs'
const openFile = (file: string) => new Promise((resolve, reject) => {
fs.readFile(file, (err, data) => {
if(err) reject(err);
resolve(data);
});
});
openFile('location')
.catch((err) => console.log(err))
.then((data) => console.log(data));
다음과 같이 사용할 수 있다.
결론
Promise는 callback hell을 조금이나마 완화할 수 있는 문법이다.
하지만 여전히 callback hell을 유발할 가능성이 남아있다.
다음 게시글에서 이를 완전히 해결한 async/await 문법에 대해 알아보겠다.
'TypeScript' 카테고리의 다른 글
async/await 문법?? 먹는건가요? (0) | 2024.05.22 |
---|