Skip to content
This repository has been archived by the owner on Dec 11, 2018. It is now read-only.

API using Promise #12

Open
simnalamburt opened this issue Apr 23, 2016 · 7 comments
Open

API using Promise #12

simnalamburt opened this issue Apr 23, 2016 · 7 comments

Comments

@simnalamburt
Copy link
Member

simnalamburt commented Apr 23, 2016

지금은 API가 모두 함수마다 콜백을 다는 형태인데, Promise를 쓰고싶습니다. 어떻게 디자인하면 좋을까요?

CC @VBChunguk @disjukr

@simnalamburt simnalamburt mentioned this issue Apr 23, 2016
11 tasks
@disjukr
Copy link
Member

disjukr commented Apr 24, 2016

이 라이브러리에 하위호환성은 별로 중요하다고 생각하지 않아서 그냥 프로미스로 다 갈아버리는게 낫지 싶은데,
하위 호환을 고려해야한다면 node의 접근을 따라가는 것도 방법일 것 같습니다. 아직 해결된 이슈는 아닌데 여러 논의를 볼 수 있어요.

@HyeonuPark
Copy link

MongoDB 를 보면 api 호출시 콜백을 생략할 경우 Promise를 반환합니다. 이 경우 가장 큰 장점은 Callback과 Promise api를 같은 형태로 제공할 수 있다는 게 되겠죠.

@simnalamburt
Copy link
Member Author

@HyeonuPark 그거 상당히 괜찮네요.

@disjukr @VBChunguk 어떻게 생각하시나요? 전 저걸로 가도 좋을거같습니다.

@disjukr
Copy link
Member

disjukr commented Apr 24, 2016

괜찮을 것 같습니다.

@tirr-c
Copy link
Collaborator

tirr-c commented Apr 24, 2016

저도 찬성이에요

@sgkim126
Copy link

좋은 아이디어인데 아래의 4가지 method들은 이미 콜백 앞의 인자들이 optional parameter입니다.

Client.prototype.part(channels, msg, fn)
Client.prototype.topic(channels, msg, fn)
Client.prototype.kick(channels, nicks, msg, fn)
Client.prototype.mode(target, flags, params, fn)

제안하신대로 콜백의 유무로 promise를 리턴하는 동작과 콜백을 사용하는 동작 두가지를 가지게 되면, 각 method마다 상태가 4개씩 가지게 되는데
API가 너무 복잡해지지 않나 싶습니다. 차라리 bluebird의 promisifyAll 함수를 이용해서 promise를 리턴하는 Async 함수를 따로 만드는 것이 어떨까 싶습니다.

@sgkim126
Copy link

async 함수를 다로 만드는 코드는 다음과 같습니다.
이미 bluebird가 많은 것을 해주기 때문에 코드를 크게 변경하지 않고 수정할 수 있습니다.
sgkim126@f863eff

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants