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 相关文章推荐
HTML颜色选择器实现代码
Nov 23 Javascript
script标签的 charset 属性使用说明
Dec 04 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
Feb 16 Javascript
使用AngularJS对路由进行安全性处理的方法
Jun 18 Javascript
JQuery实现Ajax加载图片的方法
Dec 24 Javascript
js 获取当前web应用的上下文路径实现方法
Aug 19 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
Dec 14 Javascript
详解webpack解惑:require的五种用法
Jun 09 Javascript
深入研究React中setState源码
Nov 17 Javascript
laydate如何根据开始时间或者结束时间限制范围
Nov 15 Javascript
解析vue、angular深度作用选择器
Sep 11 Javascript
vue实现移动端图片上传功能
Dec 23 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
真正面向对象编程:PHP5.01发布
2006/10/09 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
PHP实现微信发红包程序
2015/08/24 PHP
各种快递查询--Api接口
2016/04/26 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
Python实现对百度云的文件上传(实例讲解)
2017/10/21 Python
django定期执行任务(实例讲解)
2017/11/03 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
Python中itertools的用法详解
2020/02/07 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
"引用"与多态的关系
2013/02/01 面试题
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
会计毕业生求职简历的自我评价
2013/10/20 职场文书
生产内勤岗位职责
2013/12/07 职场文书
影视动画专业个人的自我评价
2013/12/31 职场文书
大学军训感言
2014/01/10 职场文书
社区学雷锋活动策划方案
2014/01/30 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
检讨书怎么写
2015/05/07 职场文书
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android