RxJS在TypeScript中的简单使用详解


Posted in Javascript onApril 13, 2020

1. 安装

# 安装 typescript, rxjs 包
npm install -D typescript @types/node
npm install rxjs

2. 使用

2.1 使用 from 来从数组生成源

RxJS 有许多创建源的方法,如 from, fromEvent..., 这里使用 from做个例子

import {from} from 'rxjs'

// 从数组生成可订阅对象
// obser 的对象类型为 Observable
let obser = from([1,2,3,4,5])
// 消费对象
// next 当管道中有值流动,就会出发next
// 当发生错误是会触发 error
// 当循环完数组时,会调用complete
obse.subscribe({
  next(item) {
    console.log(item)
  },
  error(err) {
    console.log(err)
  },
  complete() {
    console.log("Done")
  }
}

2.2 自定义生成源

import {Observable, from} from 'rxjs'

// 新建一个可订阅对象
let obser = new Observable<string>(productor => {
  // 自定义数据流
  productor.next("hello")
  productor.next("world")
  setTimeout(()=>{
    productor.next("After 1 Sec")
    productor.complete()
  }, 1000)
})

// 消费
obse.subscribe({
  next(item) {
    console.log(item)
  },
  error(err) {
    console.log(err)
  },
  complete() {
    console.log("Done")
  }
}

3. 实际例子,使用 Redis

3.1 安装 Redis

npm install redis @types/redis

3.2 使用

import {RedisClient} from "redis"
import {Observable} from "rxjs"
// 连接redis, redisclient 的构造类型是”ClientOpt接口“,只要是符合其字段定义的对象就可以
let reids = new RedisClient({
  host:"localhost",
  port:6379
})
// redis的操作都是异步操作,通过回调使用,很容易陷入毁掉地狱
redis.set("name", "tom", (err, res)=>{
  // 需要在set成功后同步的操作
  if(!err) {
    redis.get("name", (err,res)=> {
      console.log(res)
    })
  }
})

// 可以使用 Promise 封装上面的方法,但我们这里使用 rxjs的事件流
let redisObser = new Observable(productor => {
// 这个列子没啥实际用途,只做演示
  redis.set("name", "jack", (err, res) => {
    productor.next(res)
    productor.complete()
  })
})
// 消费代码
obse.subscribe({
  next(key) {
    // 读取或其他需保证在 set 后的操作
    redis.get(key, (err, res) => {
      console.log(res)
    })
  },
  error(err) {
    console.log(err)
  },
  complete() {
    console.log("Query Finish")
  }
}

到此这篇关于RxJS在TypeScript中的简单使用详解的文章就介绍到这了,更多相关TypeScript使用RxJS内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
[JSF]使用DataModel处理表行事件的实例代码
Aug 05 Javascript
javascript拖拽上传类库DropzoneJS使用方法
Dec 05 Javascript
jQuery制作简单柱状图实例
Jan 28 Javascript
JS网页在线获取鼠标坐标值的方法
Feb 28 Javascript
整理Javascript流程控制语句学习笔记
Nov 29 Javascript
AngularJs Javascript MVC 框架
Jun 20 Javascript
easyui form validate总是返回false的原因及解决方法
Nov 07 Javascript
8 行 Node.js 代码实现代理服务器
Dec 05 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
Dec 09 Javascript
Vue中this.$router.push参数获取方法
Feb 27 Javascript
使用webpack搭建pixi.js开发环境
Feb 12 Javascript
javascript绘制简单钟表效果
Apr 07 Javascript
JS错误处理与调试操作实例分析
Apr 13 #Javascript
JS正则表达式常见函数与用法小结
Apr 13 #Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
Apr 13 #Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
Apr 13 #Javascript
JavaScript创建表格的方法
Apr 13 #Javascript
JavaScript实现捕获鼠标坐标
Apr 12 #Javascript
jquery实现轮播图特效
Apr 12 #jQuery
You might like
php代码审计比较有意思的例子
2014/05/07 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
Javascript 布尔型分析
2008/12/22 Javascript
javascript 获取url参数和script标签中获取url参数函数代码
2010/01/22 Javascript
javascript smipleChart 简单图标类
2011/01/12 Javascript
jQuery事件 delegate()使用方法介绍
2012/10/30 Javascript
JS正则中的RegExp对象对象
2012/11/07 Javascript
js编码、解码函数介绍及其使用示例
2013/09/05 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
探究Vue.js 2.0新增的虚拟DOM
2016/10/20 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
Node.JS获取GET,POST数据之queryString模块使用方法详解
2020/02/06 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
2020/10/29 Javascript
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
详解Python验证码识别
2016/01/25 Python
python如何生成网页验证码
2018/07/28 Python
TensorFlow tf.nn.max_pool实现池化操作方式
2020/01/04 Python
python实现字符串和数字拼接
2020/03/02 Python
解决json中ensure_ascii=False的问题
2020/04/03 Python
Python unittest单元测试框架及断言方法
2020/04/15 Python
python中线程和进程有何区别
2020/06/17 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
洗煤厂厂长岗位职责
2014/01/03 职场文书
支部鉴定材料
2014/06/02 职场文书
优秀班主任事迹材料
2014/12/16 职场文书
家长评语怎么写
2014/12/30 职场文书
给老师的一封感谢信
2015/01/20 职场文书
给领导的感谢信范文
2015/01/23 职场文书
世界名著读书笔记
2015/06/25 职场文书
解析原生JS getComputedStyle
2021/05/25 Javascript