榆木0.16到0.18 Http.get?

时间:2016-11-19 17:17:18

标签: elm

我一直试图将我的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他们似乎删除了它。

有关如何解决此问题的任何帮助?我试过谷歌搜索,但发现一切都很混乱,不是很有用。谢谢!

1 个答案:

答案 0 :(得分:3)

您只需使用Http.getHttp.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,以防您想要将多个请求链接在一起。