为什么我返回一个异步 而不是一个异步的 ?

问题描述 投票:1回答:1

问题:

我在努力弄清楚如何返回一个异步结果类型的函数模型。

例:

type Get<'requestor,'item,'error> = 'requestor -> Async<Result<'item list,'error>>

注意:

直到我不得不写的是依赖于F#函数类型的C#代码我没有碰到这个问题。因此,我的C#代码被执行IO,因此想要使用任务类型。

失败的尝试:

我想写地道的F#代码,不希望都在我的F#签名洒C#的任务类型。

例如,我不想这样做:

type Get<'requestor,'item,'error> = 'requestor -> Task<Result<'item list,'error>>

我的挑战是,我还没有想出一个办法返回:

Async<Result<'item list,'error>>

这是我失败的例子:

let someLongRunningOperation = async { Ok [1] } // Returns Async<unit> instead of AsyncResult

结论:

总之,我怎么能返回异步结果类型参照以下失败的例子:

let someLongRunningOperation = async { Ok [1] }
f#
1个回答
7
投票

内部计算表达式,你需要使用return关键字在CE的类型来包装值。所以这:

let someLongRunningOperation = async { Ok [1] }

应更正如下:

let someLongRunningOperation = async { return Ok [1] }

然后你会返回一个Async<Result>

© www.soinside.com 2019 - 2024. All rights reserved.