如何从 Http.Error 中获取错误消息?
How can I get the error message out of Http.Error?
我正在尝试完成 Elm 0.17 tutorial for HTTP 中的练习。如果获取 gif 失败,我想让用户知道失败的原因并显示错误消息。
我已将我的模型修改为:
type alias Model =
{ topic : String
, gifUrl : String
, errorMessage : String
}
获取更新失败:
FetchFail error ->
(Model model.topic model.gifUrl (errorMessage error), Cmd.none)
其中函数errorMessage
如下:
errorMessage : Http.Error -> String
errorMessage error =
case error of
Http.Timeout ->
"Timeout"
Http.NetworkError ->
"Network Error"
Http.UnexpectedPayload _ ->
"UnexpectedPayload"
Http.BadResponse _ _ ->
"BadResponse"
以上功能对我来说似乎是不必要的样板。有什么方法可以直接将 Http.Error
转换成字符串吗?
您可以使用 toString
将任何内容转换为字符串。这将为您提供与案例陈述几乎相同的输出:
toString Timeout == "Timeout"
toString NetworkError == "NetworkError"
toString (UnexpectedPayload "Error") == "UnexpectedPayload \"Error\""
toString (BadResponse 500 "Error") == "BadResponse 500 \"Error\""
只需将对 errorMessage
的调用替换为 toString
,您就可以完全摆脱 errorMessage
:
FetchFail error ->
(Model model.topic model.gifUrl (toString error), Cmd.none)
我正在尝试完成 Elm 0.17 tutorial for HTTP 中的练习。如果获取 gif 失败,我想让用户知道失败的原因并显示错误消息。
我已将我的模型修改为:
type alias Model =
{ topic : String
, gifUrl : String
, errorMessage : String
}
获取更新失败:
FetchFail error ->
(Model model.topic model.gifUrl (errorMessage error), Cmd.none)
其中函数errorMessage
如下:
errorMessage : Http.Error -> String
errorMessage error =
case error of
Http.Timeout ->
"Timeout"
Http.NetworkError ->
"Network Error"
Http.UnexpectedPayload _ ->
"UnexpectedPayload"
Http.BadResponse _ _ ->
"BadResponse"
以上功能对我来说似乎是不必要的样板。有什么方法可以直接将 Http.Error
转换成字符串吗?
您可以使用 toString
将任何内容转换为字符串。这将为您提供与案例陈述几乎相同的输出:
toString Timeout == "Timeout"
toString NetworkError == "NetworkError"
toString (UnexpectedPayload "Error") == "UnexpectedPayload \"Error\""
toString (BadResponse 500 "Error") == "BadResponse 500 \"Error\""
只需将对 errorMessage
的调用替换为 toString
,您就可以完全摆脱 errorMessage
:
FetchFail error ->
(Model model.topic model.gifUrl (toString error), Cmd.none)