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": ""
        }
    ]
}



相关文章
|
28天前
|
前端开发 JavaScript API
探究 React Hooks:如何利用全新 API 优化组件逻辑复用与状态管理
本文深入探讨React Hooks的使用方法,通过全新API优化组件逻辑复用和状态管理,提升开发效率和代码可维护性。
|
2月前
|
前端开发 Java API
vertx学习总结5之回调函数及其限制,如网关/边缘服务示例所示未来和承诺——链接异步操作的简单模型响应式扩展——一个更强大的模型,特别适合组合异步事件流Kotlin协程
本文是Vert.x学习系列的第五部分,讨论了回调函数的限制、Future和Promise在异步操作中的应用、响应式扩展以及Kotlin协程,并通过示例代码展示了如何在Vert.x中使用这些异步编程模式。
54 5
vertx学习总结5之回调函数及其限制,如网关/边缘服务示例所示未来和承诺——链接异步操作的简单模型响应式扩展——一个更强大的模型,特别适合组合异步事件流Kotlin协程
|
4月前
|
前端开发 API 开发者
构建前端防腐策略问题之防腐层的核心代码实现以RxJS Observable为中心的的问题如何解决
构建前端防腐策略问题之防腐层的核心代码实现以RxJS Observable为中心的的问题如何解决
|
7月前
第二十一章 案例TodoList之新增数据
第二十一章 案例TodoList之新增数据
|
前端开发
前端学习案例4-promise封装详解4 原
前端学习案例4-promise封装详解4 原
76 0
前端学习案例4-promise封装详解4 原
|
前端开发
前端学习案例18-插入的封装3
前端学习案例18-插入的封装3
82 0
前端学习案例18-插入的封装3
|
前端开发
前端学习案例16-插入的封装1
前端学习案例16-插入的封装1
52 0
前端学习案例16-插入的封装1
|
前端开发
前端学习案例16-promise的理解方式&调用机制3
前端学习案例16-promise的理解方式&调用机制3
73 0
前端学习案例16-promise的理解方式&调用机制3
|
前端开发
前端学习案例14-promise的理解方式&调用机制1
前端学习案例14-promise的理解方式&调用机制1
77 0
前端学习案例14-promise的理解方式&调用机制1