[英]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.AwaitTask從Task<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.