0

以下を単純化する方法はありますか? runWithTimeout 関数は必要ありませんか?

let runWithTimeout timeout computation =
   Async.RunSynchronously(computation, timeout)

let processOneItem item =  fetchAction item
                           |> runWithTimeout 2000

編集:追加の方法が必要な理由は次のとおりです。

let processOneItem item =  fetchAction item
                           |> Async.Catch
                           |> runWithTimeout 2000
                           |> handleExceptions
4

3 に答える 3

3

私はfun x -> ...パイプラインの一部として使用することにあまり熱心ではありません。

コードを書くパイプラインスタイルは、API(リストなど)でサポートされている場合は良いと思いますが、APIがスタイルに適合しない場合は、通常の「C#のような」スタイルに従う方がよいでしょう。当然のことながら、これは個人的な好みですが、私は次のように書きます。

let processOneItem item =  
  let work = Async.Catch(fetchAction item)
  let result = Async.RunSynchronously(work, 30000)
  handleExceptions result
于 2010-11-30T00:39:07.580 に答える
3

おそらく、次のような意味です。

let processOneItem item =
  fetchAction item
  |> fun x -> Async.RunSynchronously(x, 2000)
于 2010-11-29T22:17:58.533 に答える
0

将来の参考のために、より完全なサンプルを次に示します。

let processOneItem item =  fetchAction item
                           |> Async.Catch
                           |> fun x -> Async.RunSynchronously(x,30000)
                           |> handleExceptions
于 2010-11-29T22:41:58.000 に答える