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

也许你的意思是这样的:

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

我不太热衷于将fun x -> ...其用作管道的一部分。

我认为编写代码的流水线风格在API(例如列表)支持时很好,但是当API不适合这种风格时,最好遵循通常的“C#-like”风格。当然,这只是个人喜好,但我只想写:

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

这是一个更完整的示例,以供将来参考:

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