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 相关文章推荐
用js实现的页面关键字密度查询代码
Dec 27 Javascript
JavaScript 判断浏览器类型及版本
Feb 21 Javascript
Js与下拉列表处理问题解决
Feb 13 Javascript
JS实现的仿QQ空间图片弹出效果代码
Feb 23 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
Dec 08 Javascript
vue.js单页面应用实例的简单实现
Apr 10 Javascript
vue调用高德地图实例代码
Apr 28 Javascript
JS原生带小白点轮播图实例讲解
Jul 22 Javascript
vue 2.0项目中如何引入element-ui详解
Sep 06 Javascript
vue实现绑定事件的方法实例代码详解
Jun 20 Javascript
typescript配置alias的详细步骤
Aug 12 Javascript
详解datagrid使用方法(重要)
Nov 06 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导出excel格式数据问题
2014/03/11 PHP
JS 有名函数表达式全面解析
2010/03/19 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
10个很棒的jQuery代码片段
2015/09/24 Javascript
基于Node.js实现nodemailer邮件发送
2016/01/26 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
Angular.js之作用域scope'@','=','&amp;'实例详解
2017/02/28 Javascript
vue 实现通过手机发送短信验证码注册功能
2018/04/19 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
JavaScript设计模式之享元模式实例详解
2019/01/17 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
Vue实现数据请求拦截
2019/10/23 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
node.js基础知识汇总
2020/08/25 Javascript
python操作MySQL数据库的方法分享
2012/05/29 Python
深入理解Python装饰器
2016/07/27 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
python中的django是做什么的
2020/07/31 Python
canvas探照灯效果的示例代码
2018/11/30 HTML / CSS
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
大学生的网络创业计划书
2013/12/26 职场文书
消防标语大全
2014/06/07 职场文书
环保标语口号
2014/06/13 职场文书
代办委托书怎么写
2014/08/01 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
师德承诺书
2015/01/20 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
寻找成龙观后感
2015/06/12 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL