FP Workshop - 2. FxTs


Chapter 2: FxTs

자바스크립트 함수형 라이브러리 FxTs를 사용해보기

1. 유저 정보 입력

여러 단계를 거쳐서 유저의 정보를 입력하는 로직

js

const getFlatUser = pipeLazy(
  setPersonalInfo,
  setAddress,
  setFlatInfo,
  isOwner,
)({ product: 'HOME_FLAT' });
const getHouseUser = pipeLazy(
  setPersonalInfo,
  setAddress,
  setHouseInfo,
  setOutbuildingSize,
  setInstallations,
  isOwner,
)({ product: 'HOME_HOUSE' });
const flatUser = getFlatUser();
const houseUser = getHouseUser();

2. 이메일 체크 예제

js

const EMAIL_REGEX =
  /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
const EmailAPI = {
  async check(email) {
    const isValid = !!email.match(EMAIL_REGEX);
    await delay(500);
    return isValid ? { email, format_valid: true } : { email, format_valid: false };
  },
};

const emails = [
  "Tee@gmail.com",
  "Tom@gmail.com",
  "Tommy@gmail.com",
  "Mas@gmail.com",
  "this.is.not.valid.email.com", // Invalid email
  "Moz@gmail.com",
  "Thom@gmail.com",
  "Tomzy@gmail.com",
  "Tizzy@gmail.com",
  "T-mas@gmail.com",
  "Mars@gmail.com",
];

const checkEmail = pipeLazy(
  toAsync, 
  map(EmailAPI.check), 
  concurrent(3), 
  peek(console.log),
  toArray
);
await checkEmail(emails)