[javascript] 순차적인 비동기 작업을 처리하는 방법
자바스크립트에서는 종종 여러 개의 비동기 작업을 순차적으로 실행해야 할 때가 있습니다. 이럴 때에는 다양한 방법을 사용하여 작업을 조직화하고 관리할 수 있습니다.
1. 콜백 함수 활용
가장 기본적인 방법은 콜백 함수를 활용하는 것입니다. 각 비동기 작업이 완료될 때마다 다음 작업을 호출하는 방식으로 순차적으로 작업을 처리할 수 있습니다. 하지만 이러한 방법은 콜백 지옥(callback hell)이라 불리는 읽기 어려운 코드를 작성할 수 있다는 단점이 있습니다.
function task1(callback) {
// 비동기 작업 수행
// 작업 완료 후 callback 호출
callback();
}
function task2(callback) {
// 비동기 작업 수행
// 작업 완료 후 callback 호출
callback();
}
task1(() => {
task2(() => {
// 마지막 작업 수행
});
});
2. Promise 활용
ES6부터 도입된 Promise를 활용하면 보다 가독성이 높고 유지보수가 용이한 코드를 작성할 수 있습니다. 각 작업을 Promise로 래핑하여 then
메서드를 이용해 순차적으로 작업을 처리할 수 있습니다.
function task1() {
return new Promise((resolve) => {
// 비동기 작업 수행
// 작업 완료 후 resolve 호출
resolve();
});
}
function task2() {
return new Promise((resolve) => {
// 비동기 작업 수행
// 작업 완료 후 resolve 호출
resolve();
});
}
task1()
.then(() => task2())
.then(() => {
// 마지막 작업 수행
});
3. async/await 활용
Promise를 보다 직관적이고 간결하게 사용할 수 있도록 ES8부터 도입된 async/await 문법을 활용하는 방법도 있습니다. async
함수 내에서 각 작업을 await
키워드를 통해 순차적으로 실행할 수 있습니다.
async function sequentialTasks() {
await task1();
await task2();
// 마지막 작업 수행
}
sequentialTasks();
마치며
비동기 작업을 순차적으로 처리하는 방법으로는 콜백 함수, Promise, async/await 등 다양한 방법이 있습니다. 각 상황에 맞게 적합한 방법을 선택하여 코드를 작성하는 것이 중요합니다. 코드 가독성과 유지보수성을 고려하여 최적의 방법을 선택하시길 바랍니다.
JavaScript Promise 문서 JavaScript async/await 문서