结合F#异步功能(Combining F# async functions)

编程入门 行业动态 更新时间:2024-10-20 00:41:23
结合F#异步功能(Combining F# async functions)

我在这里有点沮丧。 我知道我已经掌握了所有的东西,但我无法弄清楚如何将它们结合起来......

let saveImageToDisk path content = async { use s = new FileStream(path, FileMode.OpenOrCreate) do! s.AsyncWrite(content) printfn "Done writing %A" path } // returns Async<unit> let getImages imageUrls = imageUrls |> Seq.map (fun url -> topath url, getImage url) //Next line not happy because content is Async<byte[]> instead of byte[] |> Seq.map (fun (path, content) -> saveImageToDisk path content) |> Async.Parallel |> Async.RunSynchronously

I'm a bit frustrated here. I know I've got all the bits, but I can't work out how to combine them...

let saveImageToDisk path content = async { use s = new FileStream(path, FileMode.OpenOrCreate) do! s.AsyncWrite(content) printfn "Done writing %A" path } // returns Async<unit> let getImages imageUrls = imageUrls |> Seq.map (fun url -> topath url, getImage url) //Next line not happy because content is Async<byte[]> instead of byte[] |> Seq.map (fun (path, content) -> saveImageToDisk path content) |> Async.Parallel |> Async.RunSynchronously

最满意答案

您可以使用async表达式将两者结合使用:

let getImages imageUrls = imageUrls |> Seq.map (fun url -> async { let! content = getImage url return! saveImageToDisk (topath url) content }) |> Async.Parallel |> Async.RunSynchronously

You can combine the two using the async expression:

let getImages imageUrls = imageUrls |> Seq.map (fun url -> async { let! content = getImage url return! saveImageToDisk (topath url) content }) |> Async.Parallel |> Async.RunSynchronously

更多推荐

本文发布于:2023-07-26 00:20:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1268368.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:功能   Combining   functions   async

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!