[javascript] 비동기 작업의 순서 보장 방법

JavaScript에서 비동기 작업을 수행할 때, 작업이 완료될 때까지 기다리지 않고 다른 작업을 동시에 수행할 수 있습니다. 이때 비동기 작업의 순서를 보장하는 방법에 대해 알아보겠습니다.

콜백 함수 활용

가장 흔히 사용되는 방법은 콜백 함수를 활용하는 것입니다. 비동기 함수 내에서 작업이 끝나면 특정 함수를 호출하도록 작성하여, 이를 통해 다음 작업을 순서대로 실행할 수 있습니다.

예를 들어, setTimeout 함수를 사용하여 일정 시간이 지난 후에 특정 작업을 처리하는 경우:

setTimeout(() => {
  // 작업 처리
  console.log('첫 번째 작업 완료');

  // 다음 작업 실행
  doNextTask();
}, 1000);

Promise 활용

Promise는 ES6부터 도입된 비동기 처리를 위한 객체로, 비동기 작업이 성공 또는 실패했을 때의 결과 값을 처리할 수 있습니다. 이를 이용하여 순서를 보장할 수 있습니다.

doAsyncTask()
  .then((result) => {
    // 첫 번째 작업 완료
    console.log('첫 번째 작업: ', result);
    return doNextTask();
  })
  .then((result) => {
    // 두 번째 작업 완료
    console.log('두 번째 작업: ', result);
  })
  .catch((error) => {
    // 에러 처리
    console.error('에러 발생: ', error);
  });

async/await 활용

ES8부터는 async/await이 도입되어 비동기 작업의 순서를 명료하게 표현할 수 있습니다.

async function doTasksInOrder() {
  try {
    const result1 = await doAsyncTask1();
    console.log('첫 번째 작업: ', result1);

    const result2 = await doAsyncTask2();
    console.log('두 번째 작업: ', result2);
  } catch (error) {
    console.error('에러 발생: ', error);
  }
}

결론

JavaScript에서 비동기 작업의 순서를 보장하는 방법에는 콜백 함수, Promise, async/await 등 다양한 방법이 있습니다. 각 상황에 맞게 적절히 활용하여 코드를 더욱 효율적으로 작성할 수 있습니다.

참고문헌: