자바스크립트 이벤트 루프를 이용하여 동시성 작업을 처리하는 예를 보여주세요.

자바스크립트는 단일 스레드로 동작하는 언어로, 동시성 작업을 처리하기 위해 이벤트 루프를 사용합니다. 이벤트 루프는 비동기 작업을 처리하고 결과를 반환하기 위한 메커니즘으로, 콜백 함수와 프로미스 등을 활용합니다. 이번 포스트에서는 이벤트 루프를 이용하여 동시성 작업을 처리하는 예시 코드를 보여드리겠습니다.

// 비동기 작업 1
function asyncTask1() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Async task 1 completed");
    }, 2000);
  });
}

// 비동기 작업 2
function asyncTask2() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("Async task 2 completed");
    }, 3000);
  });
}

// 동시성 작업 처리
async function concurrentTask() {
  const result1 = await asyncTask1();
  console.log(result1); // Async task 1 completed
  
  const result2 = await asyncTask2();
  console.log(result2); // Async task 2 completed

  // 추가적인 작업 수행 가능
}

// 동시성 작업 시작
concurrentTask();

위의 예시 코드에서는 두 개의 비동기 작업을 처리하면서 동시에 실행될 수 있도록 이벤트 루프를 활용하고 있습니다. asyncTask1asyncTask2는 각각 2초와 3초 후에 완료되는 비동기 작업 함수입니다. concurrentTask 함수에서 await을 사용하여 두 작업이 완료될 때까지 기다린 다음 결과를 출력합니다.

이벤트 루프를 통해 동시성 작업을 처리하면, 비동기 작업이 완료되기를 기다리지 않고 다음 작업을 실행할 수 있으므로 프로그램의 응답성을 향상시킬 수 있습니다.

#javascript #이벤트루프