2016-11-19 44 views
1

我一直在試圖將我的Elm 0.16代碼轉換爲0.18。然而,我似乎無法得到我必須工作的Http.get。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

但由於在0.18,他們刪除,它似乎然後我仍然得到「Task不公開toResult」的錯誤。

如何解決此問題的任何幫助?我嘗試了谷歌搜索,但發現一切都非常混亂,並不是很有用。謝謝!

回答

3

你只需要使用Http.getHttp.sendfetch功能:

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(如果需要將多個請求鏈接在一起)。

+0

謝謝!這似乎工作:嗯,它編譯,所以它應該工作。在更新到0.18之前,有更多的代碼需要更新,而且沒有時間。希望這是最後一件事,但它不是:( –