我试图在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
转换为字符串?
答案 0 :(得分:16)
您可以使用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)