최근에 저는 Swagger를 사용한 Node.js 에 대한 간단한 리스너를 구축하기 위해 동기화 게이트웨이 피드를 변경합니다. 그 버전에서는 동기식 호출을 사용하여 모든 작업을 수행했습니다. 보다 완벽한 솔루션을 구축하기 위해 노력 중이므로 약속을 사용하기로 결정했습니다. 저는 블루버드 약속 라이브러리. 블루버드는 기본 제공 버전에 비해 몇 가지 멋진 기능이 있습니다.
문제
한 가지 문제를 해결하는데 시간이 좀 걸렸습니다. 블루버드에는 편리한 기능이 있습니다. 반환
. 주어진 값으로 해결되는 프로미스를 만드는 것을 줄여 부르는 말입니다. 이렇게 사용하면 됩니다:
1 2 |
doSomething() .반환("관련 없는 값"); |
하지만 이 기능을 사용할 때 계속 오류가 발생했습니다:
1 |
유형 오류: doSomething().반환 는 not a 함수 |
더 복잡한 구조는 잘 작동했기 때문에 처음에는 정말 당황스러웠습니다.
솔루션
블루버드는 표준 프로미스 구현을 대체할 수 있도록 만들어졌습니다. 그러나 Swagger JS 클라이언트 는 Q 라이브러리를 명시적으로 프로미스합니다.
즉, 동기화 게이트웨이 엔드포인트에 대한 호출로 반환되는 약속이 Q 버전으로 대체되고 있었습니다. Bluebird와 Q는 핵심 API의 상당 부분을 공유하기 때문에 무슨 일이 일어나고 있는지 알아내기 위해 약간의 조사가 필요했습니다.
이 문제를 해결할 수 있는 몇 가지 방법이 있습니다. 이후 반환
가 너무 간단한 루틴이기 때문에, 저는 그냥 동등한 수준의 다음
호출합니다.
원하는 경우 시도해 볼 수 있는 몇 가지 대안이 있습니다:
약속하기
Swagger의 기본 지원 대신 Swagger 사용- "bluebird-q" 프로젝트를 사용하여 Q를 블루버드로 바꾸기
- 다음으로 통화를 마무리합니다.
Promise.resolve()
포스트 스크립트
더 많은 리소스를 확인하세요. 개발자 포털 트위터에서 팔로우하세요 카우치베이스 개발.
질문에 대한 답변을 게시할 수 있습니다. 포럼. 그리고 다음에도 적극적으로 참여합니다. 스택 오버플로.
다음 주소에서 저를 개인적으로 팔로우할 수 있습니다. 호드그릴리.