假设我需要调用一个远程JSON / HTTP服务。 我做一个JSON请求,通过HTTP发送到服务器,接收并解析JSON响应。
假设我有数据类型MyError
的错误,我所有的函数返回Either[MyError, R]
type Result[A] = Either[MyError, A]
def makeJsonRequest(requestData: RequestData): Result[String] = ...
def invoke(url: URL, jsonRequest: String): Result[String] = ...
def parseJsonResponse(jsonResponse: String): Result[ResponseData] = ...
我可以将它们写一个新功能:
def invokeService(url: URL, requestData: RequestData) Result[ResponseData] = for {
jsonRequest <- makeJsonRequest(requestData).right
jsonResponse <- invoke(url, req).right
responseData <- parseJsonResponse(jsonResponse).right
} yield responseData
现在,如果有什么parseJsonResponse
失败了呢?
我得到的错误,但我还需要整个环境 。 这就是我需要的url
, requestData
和jsonRequest
。 你会如何建议我做吗?