やあ。 elmishアプリケーション用の非同期タスクを作成しようとしています。 2つの非同期リクエストを並行して実行し、それらの応答を結果に適用したいと思います(適用スタイル)。 私の問題は、2つ(またはそれ以上)の異なる非同期を並行して開始する必要があり、非同期が異なる結果タイプをラップしているため、Async.Parallelを使用できないことです。 問題は、Async.StartChildがFableに実装されていないようですが、ブラウザー開発ツールでコンパイルエラーや警告が表示されないことです。
非同期リクエストは実行されません。 誰かが私が望むことを達成する方法のヒントを持っていますか?
type Task<'Result, 'Error> =
Async<Result<'Result, 'Error>>
let private (<!>) = Result.map
let private (<*>) = Result.apply
let map2Parallel func taskA taskB =
async {
let! result1Async = taskA |> Async.StartChild // start first request but do not wait
let! result2Async = taskB |> Async.StartChild // start second request in parallel
let! result1 = result1Async
let! result2 = result2Async
let result =
func <!> result1 <*> result2
return result
}
予想:両方の非同期操作が開始されます。
実際:何も起こらず、ブラウザコンソールにコンパイルエラーも警告/エラーもありません
うーん、その通りです。 Async.StartChild
はまだ実装されていません。 私はそれが可能であるはずだと思います、私は見ていきます。 ご指摘いただきありがとうございます! 👍
ありがとう!
おかげさまで! この修正は、次のFable1.3ベータバージョンで公開されます。 うまくいけば今日:)