3

2 つの AJAX 呼び出しを並行して実行する JS コードを移植しようとしていますが、操作する前に両方を完了する必要があります。JQuery を使用すると、次のことができます。

$.when($.getJSON('/configVal'),
    $.getJSON('/configdesc'))
    .then(function(configByPluginResponse, configSpecResponse) {

今、私はFayをどう扱うべきか分かりません. haskell のマルチスレッド部分は利用できません。両方のフェッチを順次ではなく並行して実行したいので、状態モナドは本当に必要ありません。

Fay ソースでこの例、Cont.hsを見つけました。実際に問題を解決できるかどうかはわかりませんが、「fay Cont.hs」を実行しただけではコンパイルされません。GHC.Base.Monad を知らないと文句を言っています。これはFayの現在のGITヘッドです。

編集:可能であればHaskellのセマンティクスを喜ばせたいと思います.そうでない場合は...はい、jqueryの「then」をラップします。Fay で継続または FRP を実現する方法がわかりません。そのためのガイダンスをいただければ幸いです (FRPの場合、Fay が十分に表現力があるかどうかは疑問です)。したがって、2番目の選択肢として、「then」をラップするだけですが、可能であれば、JSが(おそらく配列を介して)行うように、任意の数の同時ajaxリクエストを受け入れることを本当に望んでいます。これは達成が複雑になる可能性があります。自分でやってみますが、無理だと思います。

fay-jqueryバインディングでこのコメントを見ました:

-- TODO: jQuery['when'](): figure out Deferred first

--no-ghc フラグを使用する必要がありました。フラグはタイプチェックを無効にしますが、それについては夢中ではありません。

このような問題を解決する言語として Haskell の方が優れていると確信しているのに、そのような操作を JS ライブラリに頼らなければならないのはいらだたしいことです。

EDIT2 :私が欲しいのはコルーチンのようです。私はいくつかのHasteコードが関連することをしているのを見たことがありますが、正確にはそうではありません。この問題に対する Haste または GHCJS ソリューションも受け入れます。

EDIT3:通常のHaskellでは、これでうまくいくようです。GHCJS と Haste で動作すると思いますが、Fay ではおそらく JS をラッピングする必要があると思います...

4

0 に答える 0