榆树Http示例Http.send调用

时间:2017-03-19 06:10:37

标签: elm

我已经浏览了每个Http函数(参数和返回值)的文档,对函数currying知之甚少,我无法理解Http.send函数中编写的getRandomGif : String -> Cmd Msg函数调用顺序

需要帮助理解/扩展Http.send,调用函数的顺序。 http://elm-lang.org/examples/http

-- send : (Result Error a -> msg) -> Request a -> Cmd msg
-- NewGif (Result Http.Error String)
-- get : String -> Decoder a -> Request a

Http.send NewGif (Http.get url decodeGifUrl)

1 个答案:

答案 0 :(得分:2)

from tkinter import * import os class TechnologyIDE: def __init__(self, master): #Vytvoření master self.master = master master.title('Technology IDE') #Frame frame = Frame(root) frame.pack() self.frameLEFT = Frame(master) self.frameLEFT.pack(side=LEFT, fill=Y) self.frameRIGHT = Frame(master) self.frameRIGHT.pack(side=RIGHT, expand=True, fill=BOTH) #Boxy self.showCodewitHLines() self.showProjectToolbar() self.showNavigator() def showProjectToolbar(self): screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() width = int(screen_width/30) listbox = Listbox(self.frameLEFT) listbox.pack(side=TOP, anchor=W) listbox.insert(END, "PROJECTS") listbox.insert(END, " SOURCE") def showCodewitHLines(self): e = Text(self.frameRIGHT) e.pack(fill=BOTH) def showNavigator(self): screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() width = int(screen_width/30) listbox = Listbox(self.frameLEFT) listbox.pack(side=TOP, anchor=W) listbox.insert(END, "NAVIGATOR") root = Tk() ide = TechnologyIDE(root) root.mainloop() 在内部调用Task

以下是其他频道的响应(Slack& Youtube)

https://www.youtube.com/watch?v=EDp6UmaA9CM

Elm的任务系统最终会调用构造函数LoadUser。

Http.send创建了一个我们交给Elm架构的Cmd,因此它可以代表我们执行HTTP请求。我们提供给Http.send的函数告诉Elm我们想要在它返回时如何处理结果。

您可以在此处查看Cmd的创建位置:https://github.com/jfairbank/arch-elm/blob/master/app/src/Profile.elm#L120-L121

因为我们为Http.send提供了一个Msg值LoadUser作为我们的函数,所以一旦我们得到结果,它允许我们稍后在更新函数中响应LoadUser。

这是Elm生成任务的地方:https://github.com/elm-lang/http/blob/master/src/Http.elm#L85-L87。在这种情况下,resultToMessage参数将是LoadUser。

使用函数组合运算符可能很难理解,但是这里最终会在任务模块中调用resultToMessage或LoadUser:https://github.com/elm-lang/core/blob/5.1.1/src/Task.elm#L237-L243

https://spin.atomicobject.com/2016/10/11/elm-chain-http-requests/