gpt4 book ai didi

scala - 依赖 future

转载 作者:行者123 更新时间:2023-12-02 06:56:28 29 4
gpt4 key购买 nike

开始玩 Scala futures,我被依赖的 futures 困住了。

让我们举个例子。我搜索地点并获得 Future[Seq[Place]]。对于这些地点中的每一个,我搜索最近的地铁站(该服务返回一个 Future[List[Station]])。

我会这样写:

Place.get()
.map { places =>
places.map { place =>
Station.closestFrom(place).map { stations =>
SearchResult(place, stations)
}
}
}

那个东西会让我得到一个Future[Seq[Future[SearchResult]]]...这不是我所期望的。

为了获得 Future[Seq[SearchResult]] 我错过了什么?

谢谢大家

阿尔类

最佳答案

您的解决方案中缺少两个 Future 概念:flatMapFuture.sequence

解释每一个:

flatMapmap 类似,除了不是从 future.map(A => B) 给它一个函数,而是给它一个函数来自 future.flatMap(A => Future[B])。这样您就可以将 Futures 链接在一起。

Future.sequence 是一个辅助函数,它将 future 列表与列表的 future 结合起来:Seq[Future[A]] => Future[Seq[A]]

使用 Future API 的这两个特性,我们可以将您的答案更改为:

Place.get().flatMap { places =>
Future.sequence(places.map { place =>
Station.closestFrom(place).map { stations =>
SearchResult(place, stations)
}
})
}

关于scala - 依赖 future ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30423878/

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