我正在寻找端口JS代码,该代码在并行运行两个AJAX调用,但需要在运行之前完成。 使用JQuery,您可以:
$.when($.getJSON('/configVal'),
$.getJSON('/configdesc'))
.then(function(configByPluginResponse, configSpecResponse) {
现在我不确定如何处理Fay。 haskell的多线程部分不可用。我真的不想要一个状态monad,因为我希望两个提取都以并行方式运行,而不是按顺序运行。
我在Fay来源中发现了这个例子,Cont.hs。我不确定它是否能真正解决问题,但无论如何,如果我只运行“fay Cont.hs”,它就无法编译;它抱怨不知道GHC.Base.Monad。这是当前GIT的Fay负责人。
编辑:如果可能的话,我想要令人满意的Haskell语义,如果不是......那么是的,包装jquery的“然后”。我不确定如何使用Fay实现延续或FRP,我将不胜感激(对于FRP it's questionable wether Fay is expressive enough)。所以作为第二个选择,我只需要包装“then”但是如果可能的话我真的希望它接受任意数量的并发ajax请求,就像JS那样(可能通过数组),这可能很复杂。我会自己试一试,但我想我不会成功。
我看到in the fay-jquery bindings这条评论:
-- TODO: jQuery['when'](): figure out Deferred first
我确实设法编译Cont.hs,我不得不使用--no-ghc标志。所以我会稍微检查一下,虽然这个标志禁用了类型检查,但并没有为此疯狂。
当我确信Haskell能够更好地解决此类问题时,必须依赖JS库进行此类操作,这是令人沮丧的。
EDIT2 :所以看起来我想要的是协同程序。我已经看到一些Haste代码做了相关的事情,但没有做到这一点。我也会接受Haste或GHCJS解决这个问题的方法。
EDIT3 :在normall Haskell好吧this does it;我想它适用于GHCJS和Haste,但在Fay中它可能必须包装JS我猜...