4

我想知道,您将如何使用功能响应式编程编写一个程序,该程序每 x 个时间步从给定的 URL 检索一个 JSON 对象?

我正在研究 Elm 框架,但我对更通用的解决方案持开放态度。我有一个方法

send : Signal (Request a) -> Signal (Response String)

即,它接受一个包裹在信号中的 HTTP 请求,并返回一个包裹在信号中的响应字符串。

现在,我有一个“下一个状态”函数,它接受输入信号并创建一个新的游戏状态。这些是使用 foldp 包裹起来的。输入信号之一是来自 HTTP 请求的响应。但是,当我运行它时,查询只运行一次,而不是每个时间步。我怎样才能解决这个问题?

编辑:这是我使用非 FRP(命令式)解决这个问题的方法:

while True:
    myJson = send postRequest url
    --do stuff with myJSON
    sleep(timestep)

即只是经常查询url,无限循环。

4

1 回答 1

5

从 Elm 文档中,您会发现:

every : Time -> Signal Time

lift : (a -> b) -> Signal a -> Signal b

get : String -> Request String

send : Signal (Request a) -> Signal (Response String)

上面的函数可以用来做你需要的:

send $ lift (\_ -> get myURL) $ every (10 * seconds)这将是类型Signal (Response String)

我还没有测试过代码,但我希望这能给你这个想法。

于 2013-09-08T06:51:50.040 回答