是否可以在F#中使用Async工作流,并行执行多个异步操作但不等待结果?这有道理吗? :)
所以不要这样:
let runAll() =
urlList
|> Seq.map fetchAsync
|> Async.Parallel
|> Async.RunSynchronously
|> ignore
做这样的事情:
let runAll() =
urlList
|> Seq.map fetchAsync
|> Async.Parallel
|> ignore
当然我需要启动操作,所以我尝试在fetchAsync函数中开始执行异步操作,然后只需调用函数即可:
let runAll() =
urlList
|> Seq.map fetchAsync
|> ignore
但是,我的代码不再并行化了:/
我可能错过了一些明显的东西。
感谢您的帮助!
答案 0 :(得分:1)
我的理解是你想要启动一整堆异步操作,然后在不等待它们完成的情况下做其他事情。在这种情况下,您希望使用Async.Start
,如下所示:
let runAll() =
urlList
|> List.map Async.Start