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核心数工作。