提取未来结果的更安全的方式

时间:2015-04-29 03:34:21

标签: scala future

     for {
        Some(article) <- articleService.get(id) // returns Future[Option[Article]]
        Some(account) <- accountService.get(article.authorId) // resturns Future[Option[Account]]
      } yield ArticleDetail(article, account)

这种方式很简单但不安全,因为Some(article)Some(account)可能会抛出NoSuchElementException

当然我们可以使用flatMap像这样重写它

articleService.get(id).flatMap {
  case Some(article) => accountService.get(article.authorId).map(ArticleDetail(article, _))
  case None =>
    Future.successful(None)
}

但不是那么直截了当

有一种安全而简单的方法吗?

0 个答案:

没有答案
相关问题