Java Как включить обратный вызов в Promise?
Сцены
Ранее Java использовала функцию обратного вызова, чтобы дождаться загрузки указанного ресурса и затем выполнить обратный вызов.Теперь, если вы хотите изменить стиль Promise, есть ли хороший способ?
Например:
Void watch(Predicate<String> f, Consumer<Stat> callback)
Преобразовать в
Future<Stat> watch(Predicate<String> f)
Кстати, я использовалбыть асинхронным в Promise в JavaScript, но я не знаком с ним в Java.,,Вот код, который упаковывает setTimeout
как Обещание
Var wait = ms => new Promise(res => setTimeout(res, ms))
Итак, есть ли какое-нибудь хорошее решение?
Я знаю, что есть CompletedFuture
и CompletableFuture
в Java, но я не знаю, как создать 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
), обратитесь за советом!
Код, который я сейчас вызываю, выглядит следующим образом:
watch("/test/test.xml", stat -> {
Log.info("Result file has been created: {}", stat)
})
Идеализированный вызов должен быть
watch("/test/test.xml")
.thenAccept(stat -> {
Log.info("Result file has been created: {}", stat)
})