参数和管道的顺序
有没有简化以下的方法,所以我不需要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