微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

rxJava的API如何工作

如何解决rxJava的API如何工作

我经常看到使用rxJava以反应方式编写的API。我已经学习了rxJava的基础知识,曾经以为我知道它是如何工作的。但是当我在API上下文中再次考虑它时,我开始不理解它。当没有观察者订阅可观察对象时,为什么API可以工作并返回响应?

在rxJava中,通常使用observable和observer来解释它,并且有一个订阅动作,例如

Observable<String> source = source.just("a","b");
source.subscribe(s -> System.out.println(s));

但是在使用rxJava和Spring编写的API中,没有观察者,也没有订阅动作,例如控制器类如下

@GetMapping(value = "/test")
public Observable<ServiceResponse> getTestValue(@RequestParam(value = "id") final String id) {
  return testService.getValue(id);
}

“ testService”类将进行一些处理,例如调用一个API以获取一些数据,进行过滤或映射等,并返回一个可观察的对象。

但是在整个API中,没有订阅动作,也没有观察者。但是,为什么它能够返回响应?

解决方法

API的客户端是观察者,他们应该执行subscribe。因此,在您的示例中,预期客户端会这样做:

getTestValue("someId")
   /* maybe some other operators here */
   .subscribe();

该“客户端”可以是使用您的API开发自己的应用程序的开发人员,也可以是您要与之集成的某些框架的内部结构(在示例中,考虑到使用注释)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。