inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

함수형 프로그래밍과 JavaScript ES6+

a instanceof Promise

해결된 질문

381

후리

작성한 질문수 1

2

fxjs 와 mql 를 애용하는 개발자입니다.

 

최근 사용한 어떤 모듈에서 parameter 수에 따라 비동기 처리에 대한 응답을

callback 패턴과 Promise 패턴 모두 지원하는 함수가 있었습니다.

 

go 함수를 통해 값을 다루어왔기 때문에 당연히 Promise 패턴을 생각하고 코딩을 했습니다.

그런데 예상과는 다르게 동작했고, 무엇보다 go 함수 결과에 catch 메소드 자체가 존재하지 않았습니다.

 

알고보니 해당 모듈의 함수에서 bluebird Promise 를 사용하고 있어서

fxjs 내부의 a instanceof Promise 부분에 걸려들지 않았던 것입니다.

그래서 메소드 전체를 new Promise 로 감싸고 callback 함수에서 resolve/reject 처리하여 진행하였습니다.

 

그런데 문득, Promise 값인지 아닌지를 판단하는 a instanceof Promise 부분까지도,

함수로 받게끔 할 수 있다면 어떨까 하는 생각이 들었습니다.

is_promise = a => a instanceof Promise

대신 is_promise = a => a instanceof Promise || a instanceof blue_bird_Promise

 

물론 함수를 사용할 때마다 해당 함수를 넘기는 것이 아니라,

fxjs 내부에 is_promise = a => instanceof Promise 부분은 이미 정의되어 있고,

fxjs 초기 설정시 is_promise 함수를 다른 함수로 대체하여 사용할 수 있도록 허용하는 것을 의미합니다.

함수형-프로그래밍 javascript

답변 1

2

MDU 유인동

안녕하세요 :)

사실 이전에는 그래서 thenable 값을 모두 지원하기 위해서 a && typeof a.then == 'function' 같은 식으로 했었어요.

사실 함수로 만들어도 되는데요. 함수콜 하나라도 줄여주고자하는 것도 있구요.

후리덤님도 저와 같은 생각이시겠지만, 개인적으로 Promise 스펙을 지원하는 또 다른 Promise를 만드는 것을 반대하는 입장이라서 이번엔 thenable이 아니라 기본 Promise만 지원하는 방향으로 가긴 했어요. 

Promise라는 클래스에 새로운 메서드들을 정의하는 식으로 구현되고, 그 메서드들의 종류로 경쟁(?)하는 라이브러리들이 함수형 프로그래밍에 맞지 않다고 생각하거든요. 약속된 스펙만 가진 값일 때 여러 함수로 그 값을 잘 다룰 수 있으니까요. 

thenable 값을 모두 지원하지 않는 것이 "그런식으로 하는게 별로 안좋아." 라는 의견을 내고 있는 것이기도 한달까요.

근데 어쨌든 개발자가 사용하다가 '왜 안되지?' 하고 당황스러울 수 있는 부분이긴 할거 같아요. 

이 부분은 고민을 좀 해볼께요 :)

프론트엔드 실무에서 어떤때에 쓰이는지 궁금합니다

1

111

1

함수형 프로그래밍 심화 강의 자료 추천

0

72

2

함수형 자바스크립트 프로그래밍 책

0

54

1

filter가 아무것도 걸러내지 못하는 경우

0

114

1

take 함수의 성능적면에서의 이점

1

463

1

pipe함수

1

531

1

Identity 함수

0

451

1

함수형 프로그래밍이란

0

832

1

reduce 예제 코드 제안!

0

405

1

fxts를 배워보려고 합니다.

1

537

1

flatMap 관련 질문드립니다~

1

444

1

다용성이 높은 L.flatMap

0

358

1

변수에 재 할당 금지~

0

540

1

DevTools라고 옆에 결과 확인하는거 어떻게 하나요?

0

483

2

소요시간에 관해서 질문드립니다

1

458

1

join에 대한 내용이 궁금증이 해결되지 않아서 질문드립니다!

0

465

2

reduce에 L.range를 사용할 때

0

527

2

[이해내용 공유] Lazy 에서 C.reduce가 병렬 효과를 내는 이유

3

739

2

제가 이해한 C.Reduce와 Reduce의 동작 차이 정리

2

787

3

go, pipe 함수 관련하여 질문 드립니다.

1

499

1

안녕하세요 강사님!

0

380

2

fxts에 go가 없는 이유?

0

840

1

비동기 관련 질문입니다!

0

462

1

질문 있습니다.

0

517

1