我一直试图将我的Elm 0.16代码转换为0.18。但是,我似乎无法获得必须工作的Http.get。
旧代码是:
fetch : Decoder a -> String -> (Result Http.Error a -> b) -> Effects b --Effects became Cmd in 0.17
fetch decoder url action =
Http.get decoder url
|> Task.toResult
|> Task.map action
|> Effects.task
但是Task.toResult不再存在了。 我发现google groups conversation表示我必须转换
task |> Task.toResult |> Task.map action |> Effects.task
到
task |> Task.toResult |> Task.perform never action
但是我仍然得到" Task
不会公开toResult
"错误,因为在0.18他们似乎删除了它。
有关如何解决此问题的任何帮助?我试过谷歌搜索,但发现一切都很混乱,不是很有用。谢谢!
答案 0 :(得分:3)
您只需使用Http.get
和Http.send
作为fetch
功能:
fetch : Decoder a -> String -> (Result Http.Error a -> b) -> Cmd b
fetch decoder url action =
Http.get url decoder
|> Http.send action
从0.16开始,Http
包在发送请求之前不要求您使用中间Task
。如果您需要使用Http.toTask
,您仍然可以将请求转换为Task
,以防您想要将多个请求链接在一起。