Promise를 사용한 데이터 필터링 기능 구현

먼저, JavaScript에서 Promise는 비동기 작업을 처리하기 위한 객체입니다. 데이터 필터링은 일반적으로 비동기적으로 처리되므로 Promise를 사용하여 비동기 작업을 래핑할 수 있습니다.

다음은 Promise를 사용한 데이터 필터링 예제 코드입니다.

function filterData(data, condition) {
  return new Promise((resolve, reject) => {
    // 비동기 작업(예: 데이터베이스 쿼리, API 요청) 수행
    // 비동기 작업이 완료되면 resolve를 호출하여 Promise를 성공 상태로 변경
    // 비동기 작업이 실패하면 reject를 호출하여 Promise를 실패 상태로 변경
    // 처리할 데이터와 조건에 따라 필터링된 데이터를 반환
    // 여기서는 간단하게 배열을 기준으로 필터링하는 예제를 보여드립니다.
    if (Array.isArray(data) && typeof condition === 'function') {
      const filteredData = data.filter(condition);
      resolve(filteredData);
    } else {
      reject(new Error('Invalid data or condition'));
    }
  });
}

// 데이터 예시
const products = [
  { name: 'Apple', price: 1 },
  { name: 'Banana', price: 2 },
  { name: 'Orange', price: 3 },
  { name: 'Kiwi', price: 4 },
];

// 조건 함수 예시 (가격이 3 이상인 제품 필터링)
const condition = (product) => product.price >= 3;

// 데이터 필터링
filterData(products, condition)
  .then((filteredData) => {
    // 필터링된 데이터 처리
    console.log(filteredData);
  })
  .catch((error) => {
    // 에러 처리
    console.error(error);
  });

위의 코드에서 filterData 함수는 데이터와 조건을 인자로 받아 Promise를 반환합니다. 비동기 작업이 성공적으로 완료되면 필터링된 데이터를 resolve로 전달하고, 실패 시 reject로 에러를 전달합니다.

참고로, 데이터 필터링의 예시로 배열을 사용했지만 실제 프로젝트에서는 데이터베이스 쿼리, API 요청 등과 같은 비동기 작업을 수행하는 것이 일반적입니다.

이제 Promise를 사용하여 데이터 필터링 기능을 구현하는 방법에 대해 알아보았습니다. 이를 응용하여 다양한 비동기 작업을 처리할 수 있습니다. 기존의 콜백 헬(callback hell)을 피하고 가독성이 좋은 비동기 코드를 작성할 수 있다는 점에서 Promise는 매우 유용한 도구입니다. #JavaScript #Promise