Scala 带flatMap的异步循环
我想异步插入大量示例数据。我使用了以下代码:Scala 带flatMap的异步循环,scala,asynchronous,future,Scala,Asynchronous,Future,我想异步插入大量示例数据。我使用了以下代码: def insertSampleData(count: Int): Future[LastError] = { if (count > 0) { val future = defaultService.save(... /*sample data*/) future flatMap { _ => insertSampleData(count - 1) } } else { Future
def insertSampleData(count: Int): Future[LastError] = {
if (count > 0) {
val future = defaultService.save(... /*sample data*/)
future flatMap { _ =>
insertSampleData(count - 1)
}
} else {
Future.successful(.../* Empty */)
}
}
val result = insertSampleData(1000000) map { _ =>
"Inserted"
}
result
是一个Future[String]
当插入所有项目时返回“Inserted”
性能方面可以吗?还有其他方法吗?如前所述,这将按顺序调用
defaultService.save
。这是一个要求,还是您想并行运行它们?不,并行运行非常好,但不是1000000并行保存。据我所知,par
将根据听起来不错的CPU核心数工作。