为了账号安全,请及时绑定邮箱和手机立即绑定

Scala Futures:如何保证非空结果?

Scala Futures:如何保证非空结果?

翻翻过去那场雪 2021-06-18 15:02:33
假设我有一个返回的方法CompleteableFuture[Data]:def doIt(): CompleteableFuture[Data] = { ... }而且,有一个非零的机会doIt()可以返回null。我们如何调用doIt()直到结果不是null不阻塞调用线程?Scala 中的方法是什么?我目前的尝试:Future {  var data: Data = null  blocking {    while (data == null) { data = doIt().get }  }  data} 我不想使用blockingand get。有任何想法吗?此外,map在此之后还有人呼吁这个 Future:val myFuture = Future {  var data: Data = null  blocking {    while (data == null) { data = doIt().get }  }  data}.map { d => d.someMember } d.someMemberNullPointerException除非我们确保第一个Future具有非空结果,否则将抛出 a 。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信