小满nestjs(第十五章 nestjs 和 RxJs)

简介: nterval 五百毫秒执行一次 pipe 就是管道的意思 管道里面也是可以去掉接口的支持处理异步数据 去处理数据 这儿展示 了 map 和 filter 跟数组的方法是一样的 最后 通过观察者 subscribe 接受回调

为什么要介绍RxJs 应为 在 Nestjs 已经内置了 RxJs 无需安装 并且Nestjs 也会有一些基于Rxjs提供的API

0494e29cbd49435b9cb160f9bae1bb19.png


Rxjs 中文文档Observable | RxJS 中文文档

概念


RxJs 使用的是观察者模式,用来编写异步队列和事件处理。


Observable 可观察的物件


Subscription 监听Observable


Operators 纯函数可以处理管道的数据 如 map filter concat reduce 等


案例


类似于迭代器 next 发出通知  complete通知完成


subscribe 订阅  observable  发出的通知 也就是一个观察者


import { Observable } from "rxjs";
//类似于迭代器 next 发出通知  complete通知完成
const observable = new Observable(subscriber=>{
    subscriber.next(1)
    subscriber.next(2)
    subscriber.next(3)
    setTimeout(()=>{
        subscriber.next(4)
        subscriber.complete()
    },1000)
})
observable.subscribe({
    next:(value)=>{
       console.log(value)
    }
})


案例2


interval 五百毫秒执行一次 pipe 就是管道的意思 管道里面也是可以去掉接口的支持处理异步数据 去处理数据 这儿展示 了 map  和 filter 跟数组的方法是一样的  最后 通过观察者  subscribe 接受回调


import { Observable, interval, take } from "rxjs";
import { map, filter,reduce,find,findIndex } from 'rxjs/operators'
const subs = interval(500).pipe(map(v => ({ num: v })), filter(v => (v.num % 2 == 0))).subscribe((e) => {
    console.log(e)
    if (e.num == 10) {
        subs.unsubscribe()
    }
})

f10b3ab637944c9eb60f2eeed2e6edd9.png


案例3


Rxjs 也可以处理事件 不过我们在Nestjs 里面就不用操作DOM 了 你如果Angular 或则 Vue 框架看可以使用  fromEvent


import { Observable, interval, take,of,retry,fromEvent } from "rxjs";
import { map, filter,reduce,find,findIndex } from 'rxjs/operators'
const dom = fromEvent(document,'click').pipe(map(e=>e.target))
dom.subscribe((e)=>{
})


目录
相关文章
|
7月前
|
数据库
小满nestjs(第二十八章 nestjs 事务)
小满nestjs(第二十八章 nestjs 事务)
225 0
小满nestjs(第二十八章 nestjs 事务)
|
前端开发
小满nestjs(第十章 nestjs 提供者)
如果服务 之间有相互的依赖 或者逻辑处理 可以使用 useFactory
189 0
小满nestjs(第十章 nestjs 提供者)
|
中间件
小满nestjs(第十二章 nestjs 中间件)
中间件是在路由处理程序 之前 调用的函数。 中间件函数可以访问请求和响应对象
236 4
小满nestjs(第十二章 nestjs 中间件)
小满nestjs(第十一章 nestjs 模块)
每个 Nest 应用程序至少有一个模块,即根模块。根模块是 Nest 开始安排应用程序树的地方。事实上,根模块可能是应用程序中唯一的模块,特别是当应用程序很小时,但是对于大型程序来说这是没有意义的。在大多数情况下,您将拥有多个模块,每个模块都有一组紧密相关的功能
138 0
小满nestjs(第十一章 nestjs 模块)
|
中间件 数据安全/隐私保护
小满nestjs(第二十一章 nestjs 守卫)
守卫有一个单独的责任。它们根据运行时出现的某些条件(例如权限,角色,访问控制列表等)来确定给定的请求是否由路由处理程序处理。这通常称为授权。在传统的 Express 应用程序中,通常由中间件处理授权(以及认证)。中间件是身份验证的良好选择,因为诸如 token 验证或添加属性到 request 对象上与特定路由(及其元数据)没有强关联。
241 0
小满nestjs(第二十一章 nestjs 守卫)
|
开发框架 JSON JavaScript
小满nestjs(第一章 介绍nestjs)
Nestjs 是一个用于构建高效可扩展的一个基于Node js 服务端 应用程序开发框架并且完全支持typeScript 结合了 AOP 面向切面的编程方式
229 0
小满nestjs(第一章 介绍nestjs)
|
前端开发
小满nestjs(第九章 nestjs Session)
session 是服务器 为每个用户的浏览器创建的一个会话对象 这个session 会记录到 浏览器的 cookie 用来区分用户
330 0
小满nestjs(第九章 nestjs Session)
|
前端开发 测试技术 API
小满nestjs(第八章 nestjs 控制器)
小满nestjs(第八章 nestjs 控制器)
205 0
小满nestjs(第八章 nestjs 控制器)
|
前端开发 数据库
小满nestjs(第十四章 nestjs 下载图片)
小满nestjs(第十四章 nestjs 下载图片)
228 0
小满nestjs(第十四章 nestjs 下载图片)
|
前端开发
小满nestjs(第二十七章 nestjs typeOrm关系)
在我们开始的过程中,肯定不会把数据存在一个表里面,我们会进行分表,把数据分开存,然后通过关联关系,联合查询。
220 0
小满nestjs(第二十七章 nestjs typeOrm关系)