이 연습 문제에서는 유료 회원에게 품질 보증을 제공하는 TranslationService를 만들어요.
합리적인 시간 안에 어떤 번역 _요청_이든 처리할 수 있는 마법 같은 번역 API를 발견했고, 이걸 활용하고 싶어요.
이 마법 같은 API는 아주 최소한의 인터페이스만 가지고 있어요:
api.fetch(text)는 text의 번역을 가져와서 두 개의 값을 반환해요:
translation: 실제 번역quality: 숫자로 표현된 품질아직 요청되지 않아서 사용할 수 있는 번역이 없으면 API가 오류를 발생시켜요. 텍스트를 번역할 수 없을 때도 마찬가지예요.
api.request(text, callback)는 text의 번역을 요청하고, 준비되면 값을 넘기지 않고 callback을 호출해요.
request API는 불안정해서, 가끔 API가 callback을 오류와 함께 호출해요. 그럴 때는 다시 요청해도 괜찮아요.
이전 사용자 몇 명이 프로그래밍할 때 게을러서, 텍스트가 이미 번역되었는지 확인도 하지 않고 항상 번역을 요청했어요. 그래서 API는 이미 번역된 텍스트에 대해서는 오류를 반환하고, 모든 접근을 완전히, 영원히 차단해요.
다음은 번역 서비스 스토리에 맞는 작업의 예시예요:
다음은 안내문(스텁 주석 포함)에서 반복되는 용어에 대한 권장 사항이지 규칙은 아니에요.
TranslationService, 또는 API라고 불러요.callback을 오류와 함께 호출해요로 표현해요.모든 번역 텍스트는 클링온어에서 영어로 번역하는 것이에요.
'arlogh Qoylu'pu'?의 올바른 번역은 **How many times has it been heard?**예요.