我有一个看起来像这样的高级代码结构:
val block: (=> Option[Seq[String]]) = ...
val matches = block().get.toArray
问题是这段代码可能会失败,即.get
取决于None
时间,例如我经常抓取谷歌页面,然后我会等待并重试......
我可以像这样等待,即在 11-16 秒之间随机等待:
val random = new Random()
Thread.sleep((11000 * random.nextFloat() + 6000).ceil.toInt)
什么是优雅的单线方式来[等待]循环,直到执行结果block
不为空?就像是:
val timeInMillis = (11000 * random.nextFloat() + 6000).ceil.toInt
block().getOrWaitUntilNonEmpty(timeInMillis).toArray