RxJs合并接口应用案例

简介: RxJs合并接口应用案例

实验目标:


将来自不同接口的数据合并到一个字段中使用。


环境及依赖:

  1. vite^2.6.4
  2. rxjs6.6.6
  3. axios^0.24.0
  4. vue3+tsAngular默认支持RxJsVue默认不配置RxJs相关内容,所以更能体现创建类的操作符);
  5. 数据来源:JSONPlaceholder


创建操作符:


  1. from:核心操作,没有Observable对象就无从谈起响应式编程,from操作符将接口返回的Promise对象(像Observable对象)转为Observable对象。


合并操作符:


  1. zip
  1. 特点:拉链式组合(一对一组合);
  2. 目的:将两个接口的结果按合并顺序存在数组中。


过滤操作符:


  1. filter:查看数据是否都正常返回,期间使用数组的every函数保证每个接口状态均为200。


转换操作符:


  1. map:将接口返回的巨型数据只保留业务相关的data内容返回。


实现过程:


  1. 导入相关依赖:
import axios from 'axios'
import { from, zip } from 'rxjs';
import { filter, map } from 'rxjs/operators';
复制代码
  1. 将接口返回的promise对象转换为observable对象:
const observable1 = from(axios.get('https://jsonplaceholder.typicode.com/todos/1'));
const observable2 = from(axios.get('https://jsonplaceholder.typicode.com/posts/1/comments'));
复制代码
  1. 定义接收对象:
let response = null;
复制代码
  1. 通过Rxjs的相关操作符进行数据处理:
// 合并两个observable对象
zip(observable1, observable2)
// 预处理
.pipe(
    // 过滤数据:要求所有的接口状态必须为200
    filter(res => res.every(res => res.status === 200)),
    // 仅返回业务数据以供使用
    map(res => res.map(res => res.data)),
).subscribe(res => {
    // 将两次请求的数据合并到response对象中
    response = {
        ...res[0],
        comments: res[1],
    }
    console.log(response);
})
复制代码
  1. 合并结果展示:
{
    "userId": 1,
    "id": 1,
    "title": "",
    "completed": false,
    "comments": [
        {
            "postId": 1,
            "id": 1,
            "name": "",
            "email": "",
            "body": ""
        }
    ]
}



相关文章
|
3月前
|
存储 人工智能 前端开发
从需求到研发全自动:如何基于Multi-Agent架构打造AI前端工程师
本文深入阐述了蚂蚁消金前端团队打造的Multi-Agent智能体平台——“天工万象”的技术实践与核心思考。
966 20
从需求到研发全自动:如何基于Multi-Agent架构打造AI前端工程师
Java CompletableFuture:allOf等待所有异步线程任务结束(4)
Java CompletableFuture:allOf等待所有线程任务结束(4) private void method() throws ExecutionException, InterruptedExcept...
6584 0
|
IDE Oracle Java
获取IDE的API文档
获取IDE的API文档
330 5
|
资源调度 关系型数据库 API
一、next-auth 身份验证凭据-使用电子邮件和密码注册登录
本文是关于如何在Next.js应用中使用next-auth库实现基于电子邮件和密码的注册和登录功能的详细教程,包括环境配置、项目初始化、前后端页面开发、数据库交互以及用户状态管理等方面的步骤和代码示例。
一、next-auth 身份验证凭据-使用电子邮件和密码注册登录
|
Ubuntu Go 开发工具
Unbuntu 一键安装制定版本的Go环境
该文章提供了在Ubuntu系统上一键安装指定版本的Go语言环境的详细步骤,包括删除旧版本Go、下载并解压新版本Go到指定目录、配置Go环境变量,以及安装其他必要的开发工具。
599 2
|
前端开发 JavaScript API
Angular 与 RxJS 简直是天作之合!响应式编程最佳搭档,带你开启前端开发新境界!
【8月更文挑战第31天】在现代前端开发中,Angular 作为一款优秀框架,凭借其高性能和可扩展性脱颖而出。结合 RxJS,这一组合成为响应式编程的理想选择。RxJS 不仅优化了 Angular 的异步事件处理与数据流管理,还简化了复杂操作,如用户输入及网络请求,极大提升了代码的可读性和维护效率。通过示例应用展示,Angular 与 RxJS 的集成不仅使代码更清晰,还提供了更多处理异步任务的可能性,是提升开发质量的利器。
194 0
|
Java
Java深拷贝和浅拷贝Map对象
Java深拷贝和浅拷贝Map对象
513 0
|
网络协议 安全 JavaScript
Web实时通信的学习之旅:WebSocket入门指南及示例演示
Web实时通信的学习之旅:WebSocket入门指南及示例演示
2046 0
|
Java 容器
Stream 流常见基本操作
Stream 流常见基本操作
|
SQL 存储 Apache
Paimon 实践 | 基于 Flink SQL 和 Paimon 构建流式湖仓新方案
Paimon 实践 | 基于 Flink SQL 和 Paimon 构建流式湖仓新方案
4764 59