[javascript] 자바스크립트에서의 동시성(Concurrency)

자바스크립트는 단일 스레드 언어이며, 동시성을 다루는 방식이 특이한데요, 이것은 비동기 프로그래밍 모델 덕분입니다. 이번 글에서는 자바스크립트에서의 동시성에 대해 알아보겠습니다.

동시성(Concurrency)이란?

동시성은 여러 작업이 동시에 실행되는 것처럼 보이도록 하는 컴퓨터 과학의 개념을 의미합니다. 자바스크립트에서는 이를 위해 주로 비동기적인 처리 방식을 사용하며, 이벤트 루프(event loop)를 통해 비동기 작업을 처리합니다.

콜백(Callbacks)과 프로미스(Promises)

자바스크립트에서 비동기 처리를 다루는 주요 방법으로는 콜백프로미스가 있습니다. 콜백은 비동기 작업이 완료되었을 때 실행되는 함수를 전달하는 방식이며, 프로미스는 미래의 어떤 시점에 결과 값을 반환하거나 오류를 처리할 수 있는 객체입니다.

예시:

// 콜백
function getData(callback) {
  setTimeout(function() {
    callback('Data received');
  }, 1000);
}

// 프로미스
function getData() {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      resolve('Data received');
    }, 1000);
  });
}

getData(function(result) {
  console.log(result); // 출력: Data received
});

getData().then(function(result) {
  console.log(result); // 출력: Data received
});

비동기 작업의 사용 사례

자바스크립트에서는 네트워크 요청, 파일 읽기, 타이머 등과 같이 시간이 오래 걸리는 작업에 대해 비동기적으로 처리하는 경우가 많습니다. 또한, 이벤트 처리와 같이 사용자의 입력에 반응하는 작업도 비동기적으로 처리됩니다.

마무리

동시성은 자바스크립트에서 매우 중요한 측면이며, 비동기 처리를 다루는 방법을 잘 이해하는 것이 중요합니다. 콜백과 프로미스를 잘 활용하여 클린하고 효율적인 비동기 코드를 작성하는 것이 좋습니다.

이상으로 자바스크립트에서의 동시성에 대해 간략히 알아보았습니다. 추가적인 의견이나 개선 사항이 있다면 언제든지 알려주세요!

References: