我正在学习期货,我正在尝试创建一种方法,将两个期货作为参数(f
和g
)并返回成功完成的第一个未来,否则它返回f
或g
.
一些用例来说明我的方法的行为是:
Future 1 | Future 2 | Result Success First Success Second Future 1 Success First Failure Second Future 1 Success Second Success First Future 2 Success Second Failure First Future 1 Failure First Failure Second Future 2 (because we had a failure on Future 1, so try to see what is the result Future 2)
所以我创建了这个方法:
def successRace(f: Future[T], g: Future[T]): Future[T] = { val p1 = Promise[T]() val p2 = Promise[T]() val p3 = Promise[T]() p1.completeWith(f) p2.completeWith(g) p3. ???? p3.future }
而现在,我怎么知道哪一个先完成了?