[javascript] 프로미스를 활용한 데이터 필터링 및 정렬

데이터 필터링

프로미스를 사용하여 데이터를 필터링하는 방법은 간단합니다. 우선 비동기로 데이터를 가져오는 함수가 있다고 가정해보겠습니다. 해당 함수는 Promise 객체를 반환합니다. 이 함수를 사용하여 데이터를 가져온 후에 원하는 조건에 맞게 필터링할 수 있습니다. 예를 들어, “users”라는 배열에서 나이가 30세 이상인 유저들만 필터링해보겠습니다.

function getUsers() {
  return new Promise((resolve, reject) => {
    // 비동기로 데이터를 가져오는 로직
    const users = [
      { name: 'Alice', age: 25 },
      { name: 'Bob', age: 30 },
      { name: 'Charlie', age: 35 }
    ];
    resolve(users);
  });
}

getUsers()
  .then(users => {
    const filteredUsers = users.filter(user => user.age >= 30);
    console.log(filteredUsers);
  })
  .catch(error => console.error(error));

위 코드에서 getUsers 함수는 Promise 객체를 반환하고, 해당 Promise가 fullfilled 되었을 때 then 메서드 내부의 로직이 실행됩니다. then 메서드에서는 가져온 유저 데이터를 필터링하여 나이가 30세 이상인 유저들만 출력합니다.

데이터 정렬

데이터를 정렬하는 작업도 프로미스를 활용하여 비동기로 처리할 수 있습니다. 이번에는 “products”라는 배열을 가지고 상품들을 가격순으로 정렬하는 예제를 보여드리겠습니다.

function getProducts() {
  return new Promise((resolve, reject) => {
    // 비동기로 데이터를 가져오는 로직
    const products = [
      { name: 'Apple', price: 1000 },
      { name: 'Banana', price: 500 },
      { name: 'Orange', price: 800 }
    ];
    resolve(products);
  });
}

getProducts()
  .then(products => {
    const sortedProducts = products.sort((a, b) => a.price - b.price);
    console.log(sortedProducts);
  })
  .catch(error => console.error(error));

위 코드에서 getProducts 함수는 Promise 객체를 반환하고, 해당 Promise가 fullfilled 되었을 때 then 메서드 내부의 로직이 실행됩니다. then 메서드에서는 가져온 상품 데이터를 가격에 따라 오름차순으로 정렬하여 출력합니다.

프로미스를 활용하여 데이터 필터링 및 정렬 작업을 비동기로 처리할 수 있습니다. 이를 활용하여 코드의 가독성과 유지보수성을 향상시킬 수 있습니다. 자바스크립트에서 프로미스를 사용해보세요!

참고 자료