我正在使用 Scala 和 Akka 构建股票市场应用程序。市场匹配买家和卖家,然后发送
Promise[Transaction]
买方和卖方都需要完成(在某个时刻)以便处理交易。
问题是 promise 可能会失败,因为
- 买方资金不足,
- 卖方股份不足。
如何创建需要两个参与者协调才能完成的 Scala Promise?
最佳答案
您可以执行以下操作:
def querySellingActor(seller : ActorRef) : Future[Boolean] = ???
def queryBuyingActor(buyer : ActorRef ) : Future[Boolean] = ???
// Calling these outside the for-comprehension
// ensures that they are really parallel
val f1 = querySellingActor(sellerActor)
val f2 = queryBuyingActor(buyerActor)
val niceResult = for{
sellerCanSell <- f1
buyerCanBuy <- f2
} yield { sellerCanSell && buyerCanBuy }
niceResult
现在是一个可以传递的 Future[Boolean],您可以在其上安装回调。
关于scala - 需要两个参与者才能完成的 Akka/Scala promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27982265/