fetch를 사용해서 데이터를 하나 가져오면 Promise타입이 될텐데

이때 함수형으로는 api를 어떻게 다뤄야될까?


일단 일반적인 코드로 짜보자

2ebcc224eadc78ee36f698a518d6040374191561294acaded20c



2ebcc224eadc78ee39f698a518d604032cce5b1597d6cf511f22


값이 잘 나온다

데이터를 보면 


2ebcc224eadc78ee37f698a518d604035fdccf82e882c7898d


이런 형태로 나온다


이걸 JokeType이라고 주고 joke데이터중 하나를 랜덤하게 가져오는 코드를

함수형으로 작성하면



2ebcc224eadc78ee3fef9ffb06df231d544b8514a8ce65285da877

getJokeAsMaybe에서 에러가 발생하면 reject 호출 대신 Maybe.nothing을 반환했고

실행코드에 있던 then, catch문이 

Maybe를 사용해 결과를 가공하는 함수 getJokeAsMaybe 안으로 들어갔다


이코드는 undefined, null, NaN, Infinity 같은 불순불을 전부 걸러준다는 장점도 있지만

무엇보다 pipe나 compose와같은 함수체이닝에 넣었을때 안전하게 값을 전달하거나 처리할 수 있어서


마음놓고 자유롭게 보조함수를 만들고 함수를 합성, 조합할 수 있다