在有人考虑反对甚至关闭我的问题之前,我想强调我不是在问哪个更好(这无疑是一个无意义的问题,尤其是当我们认为一个专注于服务器而另一个专注于浏览器端时(。
从 http://winterbe.com/posts/2015/04/07/java8-concurrency-tutorial-thread-executor-examples/我们看到这个简单的例子:
ExecutorService executor = Executors.newFixedThreadPool(1);
Future<Integer> future = executor.submit(task);
System.out.println("future done? " + future.isDone()); // prints future done? false
Integer result = future.get();
System.out.println("future done? " + future.isDone()); // prints future done? true
System.out.print("result: " + result); //result: 123
好吧,添加我可以在调用 future.get(( 时控制的想法与 Observable 在实际中发生的想法几乎相同。我的意思是,例如,我可以使用可调用的休息服务,然后在一段时间后获得结果而不会阻止我的代码并控制我将接受这个懒惰的beaviour的最大时间(秒(。
我仔细阅读了Java 8流和RxJava可观察量之间的区别,很明显Java流与Angular可观察量有很大不同,但我想知道我是否正确理解了Java callable和ExecutorService的想法。
我不是 Java 人,但对我来说Callable
s 似乎是 Javascript 中 Promise 的对应物。
在非常简短和粗略的比较中,主要区别在于:
-
Promise
s 和Callable
s 是基于拉取的,而可观察量是基于推送的, -
Promise
s 和Callable
只发出一次数据,然后完成,可观察量发出多次
好吧,添加我可以在调用 future.get(( 时控制的想法与 Observable 在实际中发生的想法几乎相同。
不,作为使用者,控制何时调用 get 与控制何时在Promise
上调用then
相同。您无法控制可观察量何时作为使用者发出。
但是ofc,RxJS在很多其他方面有所不同,但这些是主要原因。