参数和管道的顺序

有没有简化以下的方法,所以我不需要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

也许你的意思是这样的:

let processOneItem item =
  fetchAction item
  |> fun x -> Async.RunSynchronously(x, 2000)

我不喜欢使用fun x -> ...作为管道的一部分。

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

let processOneItem item =  
  let work = Async.Catch(fetchAction item)
  let result = Async.RunSynchronously(work, 30000)
  handleExceptions result

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

let processOneItem item =  fetchAction item
                           |> Async.Catch
                           |> fun x -> Async.RunSynchronously(x,30000)
                           |> handleExceptions
链接地址: http://www.djcxy.com/p/39515.html

上一篇: Order of arguments and pipe

下一篇: Irregular shape detection and measurement in python opencv