javascript
[js] 비동기 프로그래밍
TTTGGG
2024. 7. 22. 11:29
728x90
반응형
SMALL
자바스크립트는 기본적으로 단일 스레드로 동작하는 언어로, 비동기 프로그래밍을 통해 여러 작업을 동시에 처리할 수 있다. 비동기 프로그래밍은 주로 네트워크 요청, 읽기/쓰기, 타이머 등 시간이 오래 걸리는 작업을 효율적으로 처리하는 데 사용된다.
콜백함수
// 비동기 프로그래밍의 가장 기본적인 형태
// 특정 작업이 완료된 후 호출되는 함수
// setTime을 사용하여 1초 후에 콜백 함수가 호출됨
function fetchData(callback) {
setTimeout(() => {
callback("Data fetched");
}, 1000);
}
fetchData((data) => {
console.log(data);
});
프로미스
// 콜백 지옥 문제를 해결하기 위해 도입된 개념으로, 비동기 작업의 완료 또는 실패를 처리할 수 있는 객체
// 비동기 작업을 체이닝하여 처리할 수 있어 가독성이 향상됨
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Data fetched");
}, 1000);
});
}
fetchData()
.then((data) => {
console.log(data);
})
.catch((error) => {
console.error(error);
});
async/await
// ES2017(ES8)에서 도입된 문법으로, 프로미스를 더욱 직관적으로 사용할 수 있게 해줌
// async 함수는 항상 프로미스를 반환하며, await 키워드는 프로미스가 해결될 때까지 함수 실행을 일시 정지함
// async/await는 비동기 코드를 동기 코드처럼 작성할 수 있어 가독성이 뛰어나고, 에러 핸들링도
// try/catch 블록을 통해 간편하게 처리할 수 있음
async function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Data fetched");
}, 1000);
});
}
async function main() {
try {
const data = await fetchData();
console.log(data);
} catch (error) {
console.error(error);
}
}
main();
728x90
반응형
LIST