Java 如何将 Callback 转 Promise?
Java 如何将 Callback 转 Promise?
场景
之前 Java 使用回调函数实现了等待指定资源加载然后执行回调,现在想修改为 Promise 风格的,有什么好的方法么?
例如
void watch(Predicate<String> f, Consumer<Stat> callback)
转换成
Future<Stat> watch(Predicate<String> f)
顺便说一下,吾辈在 JavaScript 中倒是习惯了 Promise 的异步,但 Java 中却是不怎么熟悉呢。。。
下面是将 setTimeout
封装为 Promise 的代码
var wait = ms => new Promise(res => setTimeout(res, ms))
所以,有什么好的解决方案么?
吾辈知道 Java 中有 CompletedFuture
和 CompletableFuture
,然而不知道的是如何创建一个 CompletableFuture
对象并在构造过程中使用绑定的回调函数
例如吾辈确实可以将下面这种代码转换为柯里化的函数
default void watch(String path, Consumer<Stat> callback) {
watch(map -> map.get(ListUtil.ListDiffState.right).stream()
.filter(stat -> Objects.equals(stat.getPath(), path))
.findFirst(), callback);
}
转换后
default Consumer<Consumer<Stat>> watch(String path) {
return callback -> watch(path, callback);
}
然而,吾辈却无法将之转换为 CompletedFuture
异步风格(拿不到 CompletedFuture
绑定的回调函数),求教!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你需要第三方库
https://projectreactor.io
https://github.com/ReactiveX/...
已经解决问题了,也因此写了一篇博客 使用 Java 实现 setTimeout/setInterval,内容如下:
使用 Java 实现 setTimeout/setInterval
场景
之前想把 Java 代码中使用回调函数的方法改成
Promise
风格,苦思冥想而不得其解。然而突发奇想之下,吾辈尝试在 Java 中实现 JavaScript 的setTimeout/setInterval
,并在之后想到了如何封装回调为Promise
,所以便先在此将这个想法的写出来以供参考。实现
使用