簡體   English   中英

番石榴CheckedFuture <X,Y> 映射到CheckedFuture <Z,Y> 無阻礙

[英]Guava CheckedFuture<X,Y> map to CheckedFuture <Z,Y> without blocking

最近,我遇到了番石榴及其異步未來API。

我有一個與此聲明類似的方法:

CheckedFuture<X, Y> update(final X entry)

在某個時候可能會調用具有以下簽名的方法:

CheckedFuture<Boolean, Y> delete(final X entry)

我一直在尋找並沒有找到的方法是一種將要delete的調用的結果映射到映射到CheckedFuture<X, Y> ,這是update的返回類型。

有沒有人能夠通過調用delete(entry).checkedGet()而做到這一點而不會阻塞整個計算?

任何幫助表示贊賞。

注意:我知道Guava javadocs建議避免使用CheckedFutures,但是atm這是API的構建方式,並且重建它是不切實際的(不意味着我不期待它!:)

您可以使用Futures#transform

CheckedFuture<X, Y> update(final X entry) {
    CheckedFuture<Boolean, Y> f = delete(entry);
    ListenableFuture<X> tr = Futures.transform(f, (Function<Boolean, X>) input -> entry);
    return Futures.makeChecked(tr, input -> (Y) input.getCause());
}

CheckedFuture<Boolean, Y> delete(final X entry) {
    return Futures.immediateFailedCheckedFuture(new Y());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM