簡體   English   中英

是否有F#等同於Scala的承諾?

[英]Is there an F# equivalent to Scala's Promise?

在F#中有類似Scala的承諾嗎?

雖然將future定義為為尚未存在的結果創建的只讀占位符對象類型,但可以將promise視為可寫的單一賦值容器,從而完成未來。 也就是說,可以使用promise來使用success方法成功完成具有值(通過“完成”承諾)的未來。 相反,承諾也可以用於通過使用失敗方法失敗承諾來完成未來的異常。

Async的內容涵蓋了部分內容,但如果您的代碼在Async環境之外運行,則Promises是一個方便的工具。 (例如,您可以執行諸如在UI線程中完成Promise之類的操作 - 即使UI環境對Async一無所知也是如此。)

.Net等效的promise是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.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM