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 刷新框架页的代码
Apr 13 Javascript
JSON.stringify 语法实例讲解
Mar 14 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
May 10 Javascript
基于jQuery ligerUI实现分页样式
Sep 18 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
Nov 30 Javascript
JavaScript利用正则表达式替换字符串中的内容
Dec 12 Javascript
JavaScript设计模式之单例模式详解
Jun 09 Javascript
Angular4 反向代理Details实践
May 30 Javascript
vue拖拽组件使用方法详解
Dec 01 Javascript
详解微信小程序缓存--缓存时效性
May 02 Javascript
Vuejs中的watch实例详解(监听者)
Jan 05 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
Jan 30 Vue.js
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 实用代码收集
2010/01/22 PHP
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
php class类的用法详细总结
2013/10/17 PHP
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
关于两个jQuery(js)特效冲突的bug的解决办法
2016/09/04 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
2019/02/19 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
详解js根据百度地图提供经纬度计算两点距离
2019/05/13 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
基于Python实现一个简单的银行转账操作
2016/03/06 Python
Python操作Excel之xlsx文件
2017/03/24 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
Python多层装饰器用法实例分析
2018/02/09 Python
Django ORM filter() 的运用详解
2020/05/14 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
迪奥官网:Dior.com
2018/12/04 全球购物
倡议书格式
2014/04/14 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
2014年幼儿园安全工作总结
2014/11/10 职场文书
挂靠协议书
2015/01/27 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
祝寿主持词
2015/07/02 职场文书
体育部部长竞选稿
2015/11/21 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL
Python爬虫基础初探selenium
2021/05/31 Python
HTML基础详解(下)
2021/10/16 HTML / CSS