[typescript] 화살표 함수와 익명 함수를 사용한 비동기 처리 방식 비교

자바스크립트 및 TypeScript에서 비동기 처리는 프로미스 (Promise)나 async/await를 사용하여 구현할 수 있습니다. 화살표 함수와 익명 함수는 콜백 함수를 정의할 때 주로 사용되며, 이 둘을 사용하여 비동기 처리를 구현하는 방식을 비교해 보겠습니다.

익명 함수를 사용한 비동기 처리

// 익명 함수를 사용한 비동기 처리 예제
function asyncOperation(callback: () => void) {
  setTimeout(() => {
    console.log('비동기 작업 완료');
    callback();
  }, 1000);
}

function startAsyncOperation() {
  console.log('비동기 작업 시작');
  asyncOperation(() => {
    console.log('콜백 함수 실행');
  });
}

startAsyncOperation();

위 예제에서 asyncOperation 함수는 콜백 함수를 매개변수로 받아 비동기 작업을 수행합니다. 익명 함수를 사용하여 콜백 함수를 정의하고 전달합니다.

화살표 함수를 사용한 비동기 처리

// 화살표 함수를 사용한 비동기 처리 예제
const asyncOperation = (callback: () => void) => {
  setTimeout(() => {
    console.log('비동기 작업 완료');
    callback();
  }, 1000);
}

const startAsyncOperation = () => {
  console.log('비동기 작업 시작');
  asyncOperation(() => {
    console.log('콜백 함수 실행');
  });
}

startAsyncOperation();

위 예제에서 asyncOperation 함수 및 startAsyncOperation 함수는 화살표 함수를 사용하여 정의되었습니다. 익명 함수와 동일한 역할을 수행하지만, 화살표 함수는 함수를 간결하게 정의할 수 있는 장점이 있습니다.

화살표 함수와 익명 함수의 비교

화살표 함수는 코드를 간결하게 작성할 수 있으며, 함수 내부에서 this를 가리키는 방식이 익명 함수와 다릅니다. 따라서 this가 중요한 상황에서는 주의하여 사용하여야 합니다. 반면에 익명 함수는 함수 내에서 this를 동적으로 바인딩하여 사용할 수 있습니다.

언제나 화살표 함수가 익명 함수보다 나은 것은 아니며, 상황에 따라 적절한 함수를 선택하여야 합니다.

이처럼 화살표 함수와 익명 함수를 사용하여 비동기 처리를 구현할 수 있으며, 각각의 특징을 고려하여 선택하여야 합니다.

결론

화살표 함수와 익명 함수는 각각의 장단점을 가지고 있으며, 비동기 처리에 적합하게 사용될 수 있습니다. 함수 선택 시 this의 바인딩과 코드 간결성 등을 고려하여 적절히 활용하여야 합니다.