从客户端实现的角度来看,我可以比较 Java Callable 和 Angular Observable (RxJS)

from client implementation perspective, can I compare Java Callable to Angular Observable (RxJS)

在有人想对我的问题投反对票甚至关闭之前,我想强调一下,我不是在问哪个更好(当然这是一个无意义的问题,尤其是当我们认为一个专注于服务器端而另一个专注于浏览器端时) .

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 发生的想法完全相同。我的意思是,例如,我可以使用 callable 调用休息服务,然后在一段时间后获得结果而不会阻塞我的代码并控制最大时间(秒)我会接受这种懒惰的行为。

我仔细阅读了 并且很明显 Java 流与 Angular observables 有很大不同,但我想知道我是否正确理解了 Java可调用和 ExecutorService。

我不是 Java 人,但对我来说 Callables 似乎是 Java 脚本中 Promises 的对应物。

非常简短和粗略的比较中,主要区别是:

  • Promises 和 Callables 是拉式的,而 Observables 是推式的,
  • Promises和Callables只发射一次数据,然后完成,Observables发射多次

Well, adding the idea that I can control when call future.get() is pretty the same idea happening with Observable in practical terms.

不,作为消费者,控制何时调用 get 与控制何时调用 Promise 上的 then 是一样的。您无法控制 Observable 何时作为消费者发出。

但是当然,RxJS 在很多其他方面都不同,但这些是主要原因。