자바스크립트 async/await를 이용한 알고리즘 구현

자바스크립트는 비동기 처리를 간편하게 해주는 async/await 문법을 제공합니다. 이를 활용하여 알고리즘을 구현할 수 있습니다. async/await은 Promise를 기반으로 동작하며 연속적인 비동기 작업을 동기적으로 처리할 수 있도록 도와줍니다. 이번 블로그 포스트에서는 async/await를 이용하여 간단한 알고리즘을 구현하는 방법을 살펴보겠습니다.

1. 소수 판별 함수 구현

먼저 async/await를 이용하여 소수 판별 함수를 구현해보겠습니다.

async function isPrime(number) {
  if (number <= 1) {
    return false;
  }

  for (let i = 2; i <= Math.sqrt(number); i++) {
    await sleep(1000); // 비동기 작업 시뮬레이션을 위한 sleep 함수 호출

    if (number % i === 0) {
      return false;
    }
  }

  return true;
}

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

위 코드에서는 isPrime 함수가 소수인지 아닌지를 판별합니다. sleep 함수는 비동기 작업 시뮬레이션을 위해 존재하며, 특정 시간(ms) 동안 대기하도록 합니다.

2. 소수 판별 함수 호출

이제 위에서 구현한 소수 판별 함수를 호출해보겠습니다.

async function main() {
  const number = 23;

  console.log(`Number: ${number}`);

  const isPrimeNumber = await isPrime(number);

  console.log(`Is prime? ${isPrimeNumber}`);
}

main();

위 코드에서는 main 함수에서 isPrime 함수를 호출하고 결과를 출력합니다. main 함수는 async 키워드로 선언되었으므로, await 키워드를 이용하여 비동기 작업의 완료를 기다립니다.

3. 결과 확인

위 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.

Number: 23
Is prime? true

23은 소수이므로, Is prime? true가 출력됩니다.

마무리

이번 블로그 포스트에서는 자바스크립트의 async/await를 활용하여 알고리즘을 구현하는 방법을 알아보았습니다. async/await는 비동기 작업을 보다 간편하고 직관적으로 처리할 수 있도록 도와줍니다. 알고리즘 구현뿐만 아니라 다양한 비동기 작업에 활용할 수 있으니, async/await 문법을 숙지하고 활용하는 것을 권장합니다.