【问题标题】:Is there an F# equivalent to Scala's Promise?有没有相当于 Scala 的 Promise 的 F#?
【发布时间】:2013-07-21 12:47:15
【问题描述】:

在 F# 中有类似 Scala's Promise 的东西吗?

虽然期货被定义为一种只读占位符对象 为尚不存在的结果创建,可以认为是一个承诺 of 作为一个可写的、单一赋值的容器,它完成了一个 未来。也就是说,一个promise可以用来成功完成一个 未来的价值(通过“完成”承诺)使用成功 方法。相反,一个promise也可以用来完成一个future 有一个例外,通过失败的承诺,使用失败的方法。

Async 内容涵盖了其中的一部分,但如果您有在 Async 环境之外工作的代码,Promises 是一个方便的工具。 (例如,您可以在 UI 线程中完成诸如完成 Promise 之类的事情 - 即使 UI 环境对异步一无所知。)

【问题讨论】:

    标签: scala f# promise


    【解决方案1】:

    Promise 的 .Net 等效项是 TaskCompletionSource,因此您可以在 F# 中使用它们。您可以使用Async.AwaitTaskTask<T> 创建Async<T>,例如

    let tcs = new TaskCompletionSource<int>()
    let ta: Async<int> = Async.AwaitTask tcs.Task
    
    //complete completion source using `SetResult`\`SetException` etc.
    

    【讨论】:

      猜你喜欢
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      相关资源
      最近更新 更多