我是RxJava新手,目前正在使用RxJava版本1。我的用例就像我必须进行一次rest API调用(使用rest模板)。因此,使用调度器是更好的主意吗。在这种情况下,每次都可以使用computation()或任何调度器。
我的课程是
SampleController。Java语言
@RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public DeferredResult<List<Response>> getresponse() {
DeferredResult<List<Response>> response = new DeferredResult<>();
service
.fetchJson()
.subscribe(result -> response.setResult(result));
return response;
}
服务Java语言
@Override
public Observable<List<Response>> fetchJson() {
Observable<List<Response>> list = Observable.<List<Response>>create(
subscriber -> subscriber.onNext(this.invokeRestCall(APIURL)))
.subscribeOn(Schedulers.from(executor));*/
return list;
}
private List<Response> invokeRestCall(String APIURL) {
Response[] responses = restTemplate.getForObject(APIURL, Response[].class);
return Arrays.stream(responses).collect(Collectors.toList());
}
在这里,我使用Schedulers来启动新线程。但我再次使用延迟结果进行即时响应,Spring将把它放在队列中,一旦响应出现,它就会传递响应。
那么,我应该避免调度程序并使其仅在订阅线程上运行,因为我只有一个Rest调用吗?
请建议,因为我真的是新的。
如果您想在可观察操作符的级联中引入多线程,可以通过指示这些操作符(或特定可观察操作符)在特定调度器上操作来实现。
默认情况下,Rx是同步的,所有内容都在同一个线程上工作,除非您将执行('subscribeOn')和/或观察('observeOn')分配给在其他线程上运行的调度器。
因此,这实际上取决于手头的任务。例如,改型就是使用自己的调度器。UI只能从Android主线程变异而来。对于单元测试,使用调度器可以方便地手动提前时间。
RxJava为您提供了对何时何地完成计算的关键控制。使用显式提供的调度器控制观察者链的某些阶段提供了线程安全性,并确保数据在需要时在需要的位置。
也就是说,Schedulers
静态类方法返回全局已知的调度程序。当您进行测试时,或者当您想在不同的上下文中重新使用您的代码时,全局变量的使用是一个严重的障碍。
我建议您传入要使用的调度器,可能是服务类的构造函数。这有时被称为依赖注入,它使您的代码更具可移植性、可测试性,最终更易于维护。
在RxJava中,有5种不同的调度程序可供选择: > immediate():创建并返回在当前线程上立即执行工作的调度程序。 trampoline():创建并返回一个调度程序,该调度程序将当前线程上的工作排队,以便在当前工作完成后执行。 newThread():创建并返回一个调度程序,该调度程序为每个工作单元创建一个新线程。 计算():创建并返回一个用于计算工作的调度程序。这可以用于事件循环、处理
问题内容: 我们的网站目前正在使用jQuery库,每月的访问量约为100万。我们希望包括以API为中心的方法,因此决定转向Javascript MVC并为此选择了angularJS。 现在我的问题是,我应该在Angular顶部使用jQuery,以便我需要重写最少的DOM操作代码,还是应该以Angular方式重写所有内容?我们使用的是jQuery插件,例如plupload,jQuery UI。等在网
objectName.java 主要问题是我无法转到“ageinput.java”文件, activity_ageinput.xml activity_ageinput.xml edit_text.xml 崩溃报告
哈希集由哈希映射支持。从它的JavaDoc: 这个类实现了Set接口,由哈希表(实际上是一个HashMap实例)支持 在查看源时,我们还可以看到它们之间的关系: 因此,一个<code>哈希集 使用而不是,不是更有效吗?进一步考虑的是,如果环境允许使用而不是,我们是否应该完全放弃,直接使用。 触发这些想法的基本问题是以下情况:我有一组具有以下属性的对象: 大型对象集合 如何有效地检查集装箱? 我想到
问题内容: 我有2个线程T1和T2,两者都有不同的工作,因此通常我们更喜欢通过线程Joins完成此任务。 但是我们无需使用join()就可以做到这一点。我们可以在T1线程中添加T2线程的代码。这有什么区别? 问题答案: 主要区别在于,当我们将T2线程与T1连接在一起时,T2执行该任务的时间也可以由T1占用,这意味着它们将并行执行不同的任务。但是,当您在T1中包含T2线程代码时,不会发生这种情况。线
我正在开发一个Android应用程序,我正在使用了解我的应用程序的安装来源。为此,我使用了firstInstall\u referer intent filter和一个我自己定制的过滤器。 是否有可能有两个广播接收器条目带有意图过滤器? 谷歌分析接收器 我的自定义广播接收器。