【发布时间】:2020-09-11 14:32:20
【问题描述】:
在 Javascript 中,我可以将回调包装为如下的承诺:
function subscribeAsCallback(request, callback) {
// ... async operation
const response = ...;
callback(response);
}
function subscribeAsPromise(request) {
return new Promise((resolve, reject) => {
subscribeAsCallback(request, (response) => {
resolve(response);
});
});
}
这样我就可以调用它了
subscribeAsPromise(request).then(response => {
// handling response logic
});
我想问一下它在 Java 中的等价物是什么?这是我在 Java 中的代码,我不知道如何包装回调。
public class DataSubscriber {
public void subscribeAsCallback(Request request, Consumer<Response> consumer) {
// ... async operation
Response response = ...;
consumer.accept(response);
}
public CompletableFuture<Response> subscribeAsPromise(Request request) {
// ... ?
// what is the equivalent of its Java version?
}
}
这样我就可以这样调用代码了:
dataSubscriber.subscribeAsPromise(request).thenApply(response -> {
// handling response logic
});
【问题讨论】:
-
也许我通过搜索找到的20 examples of using CompletableFuture之一就是你想要的
-
你看过
runAsync()吗? -
如何使用 runAsync() 返回
CompletableFuture<Response>? -
@CHANist 将
subscribeAscallback()方法传递给runAsync()的lambda 函数。示例here -
@codemax 抱歉,还是想不通,你能给我一个更具体的例子吗?
标签: javascript java promise callback completable-future