首页 > 解决方案 > F# 是否有 Async.Sequential 来匹配 Async.Parallel?

问题描述

F# 具有Async.Parallelwith type signature seq<Async<'a>> -> Async<'a list>,它将采用一系列 Async 类型,准备它们以并行运行,并输出单个 Async。

我想知道是否有类似Async.Sequential的具有相同类型签名,但依次运行每个项目?我觉得我一定错过了一些明显的东西?

我想做类似以下的事情:

async {
    let! results =
        myItems
        |> List.map myAsynchronousOperation
        |> Async.Sequential

    ... do something with results
}

标签: asynchronousf#

解决方案


我认为没有内置的,但编写自己的应该是微不足道的:

let sequential s = async {
    let results = ResizeArray()
    for a in s do
        let! result = a
        results.Add(result)
    return List.ofSeq results
}

推荐阅读