다음 목표 달성에 어려움을 겪고 있습니다. 원하는 값 또는 상태 코드가 성공을 나타내지 않았을 때 오류를 반환하는 방식으로 API 요청을 입력했습니다. 인증 토큰이 유효하지 않습니다. Either String r
.할로겐 구성 요소 쿼리의 throwError
내 구성 요소 쿼리를 수행 할 때 eval
일 때 걱정하지 않으려 고합니다. 나는 단지 행복 경로 (잘못된 로그온 시도와 같은 예상 오류는 행복한 경로로 간주되고 예기치 않은 것을 지우고 싶다)에 관심이 있으며 오류는 균일하게 그리고 세계적으로 (버스에 알림을 보내는 등) 처리되어야한다. 이를 위해
, 제작 한 트랜스포머 스택 :
type App = ReaderT Env (ExceptT String (Aff AppEffects))
이제 runUI
와 함께 사용하기 위해, 나는 (나는 다른 가능성을보고 싶어하지 않는 한) hoist
로 사용되는 천연 변환을 제공하는 데 필요한 : 우리가 여기 ~>
을 사용하기 때문에
runApp :: Env -> App ~> Aff AppEffects
runApp env app = do
res <- runExceptT $ runReaderT app env
case res of
Right r -> pure unit
Left err -> do Bus.write err env.bus
-- what to return here?
, 우리는 반환 형식을 유지하도록 강요하고 있지만 Left
경우에 나는 손을 필요가 없습니다!
어떻게 이러한 요구 사항을 해결할 수 있습니까? 다시 말해서 - 실행 된 작업에서 오류가 발생했을 때만 내 구성 요소 쿼리의 평가를 '취소'할 수 있기를 원하지만 자동으로 수행하고 맨 위에서 처리하려고합니다.