gpt4 book ai didi

f# - 调用 F# 异步工作流程时,我可以避免定义临时标签吗?

转载 作者:行者123 更新时间:2023-12-02 11:08:10 25 4
gpt4 key购买 nike

假设我有一个异步数据源:

let getData() = async { return [ 3.14; 2.72 ] }

我可以使用 let! 来调用它和一个临时标签:

let showData1() = async {
let! data = getData()
data
|> Seq.iter (printfn "%A")
}

或者,我可以使用 Async.RunSynchronously 来调用它(效率低下!)和管道,并且没有临时标签:

let showData2() = async {
getData()
|> Async.RunSynchronously
|> Seq.iter (printfn "%A")
}

我喜欢 showData2 的语法但知道调用Async.RunSynchronously绑定(bind)调用线程。

是否有在某处定义的语法、运算符或函数允许我通过管道传输 Async<'T>进入接受 'T 的函数?

最佳答案

听起来你想要map用于异步:

let mapAsync f a = async { 
let! v = a
return (f v)
}

那么你可以这样做:

let m: Async<unit> = getData() |> mapAsync (Seq.iter (printfn "%A"))

关于f# - 调用 F# 异步工作流程时,我可以避免定义临时标签吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30416774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com