我想知道,您如何使用功能反应式编程编写程序,每隔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)
即。只是经常查询网址,无限循环。
答案 0 :(得分:5)
从Elm docs中你会发现:
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)
我没有测试过代码,但我希望这能为您提供这个想法。