Rxjs介绍

参考手册:https://www.npmjs.com/package/rxjs

中文手册:https://cn.rx.js.org/

RxJS 是 ReactiveX 编程理念的 JavaScript 版本。ReactiveX 来自微软,它是一种针对异步数据 流的编程。简单来说,它将一切数据,包括 HTTP 请求,DOM 事件或者普通数据等包装成流 的形式,然后用强大丰富的操作符对流进行处理,使你能以同步编程的方式处理异步数据, 并组合不同的操作符来轻松优雅的实现你所需要的功能。

RxJS 是一种针对异步数据流编程工具,或者叫响应式扩展编程;可不管如何解释 RxJS 其目 标就是异步编程,Angular 引入 RxJS 为了就是让异步可控、更简单。

RxJS 里面提供了很多模块。这里我们主要给大家讲 RxJS 里面最常用的 Observable 和 fromEvent。

目前常见的异步编程的几种方法:

1、回调函数

2、事件监听/发布订阅

3、Promise
4、Rxjs


import { Injectable } from '@angular/core';import {Observable} from 'rxjs';@Injectable({providedIn: 'root'
})
export class RequestService {constructor() { }//同步
  getData(){return 'this is service data';}getCallbackData(cb){setTimeout(() => {var username='张三';// return username;
      cb(username);}, 1000);}getPromiseData(){return new Promise((resolve)=>{      setTimeout(() => {var username='张三--Promise';resolve(username);        }, 3000); })}getRxjsData(){return new Observable<any>((observer)=>{setTimeout(() => {var username='张三--Rxjs';observer.next(username);     // observer.error('数据')        }, 3000); })}//多次执行
getPromiseIntervalData(){return new Promise((resolve)=>{      setInterval(() => {var username='张三--Promise  Interval';resolve(username);        }, 1000); })}getRxjsIntervalData(){let count=0;return new Observable<any>((observer)=>{setInterval(() => {count++;var username='张三--Rxjs-Interval'+count;observer.next(username);     // observer.error('数据')        }, 1000); })}getRxjsIntervalNum(){let count=0;return new Observable<any>((observer)=>{setInterval(() => {count++;observer.next(count);     // observer.error('数据')        }, 1000); })}}

import { Component, OnInit } from '@angular/core';
import { RequestService } from '../../services/request.service';
import {map,filter} from 'rxjs/operators';
@Component({selector: 'app-home',templateUrl: './home.component.html',styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {constructor( public request:RequestService) { }runParent(msg:string){//接收子组件传递过来的数据 runParent(msg:string){    alert(msg);}public title='新闻标题'ngOnInit() {//1、同步方法
let data=this.request.getData();console.log(data);//2、callback获取异步数据this.request.getCallbackData((data)=>{console.log(data);});//3、promise获取异步数据var promiseData=this.request.getPromiseData();promiseData.then((data)=>{console.log(data);})//4、rxjs获取异步方法里面的数据var rxjsData=this.request.getRxjsData();rxjsData.subscribe((data)=>{console.log(data);})//5、过一秒以后撤回刚才的操作var streem=this.request.getRxjsData();var d=streem.subscribe((data)=>{console.log(data);})setTimeout(()=>{d.unsubscribe();  /*取消订阅*/},1000)//6、promise 执行多次(没有这个能力)var intervalData=this.request.getPromiseIntervalData();intervalData.then((data)=>{console.log(data);})//7、rxjs执行多次var streemInterval=this.request.getRxjsIntervalData();streemInterval.subscribe((data)=>{console.log(data);})//8、用工具方法对返回的数据进行处理var streemNum=this.request.getRxjsIntervalNum();streemNum.pipe(filter((value)=>{if(value%2==0){return true;}}))      .subscribe((data)=>{console.log(data);})var streemNum=this.request.getRxjsIntervalNum();streemNum.pipe(map((value)=>{return value*value;}))      .subscribe((data)=>{console.log(data);})var streemNum=this.request.getRxjsIntervalNum();streemNum.pipe(filter((value)=>{if(value%2==0){return true;}}),map((value)=>{return value*value;}))      .subscribe((data)=>{console.log(data);})}}

转载于:https://www.cnblogs.com/loaderman/p/10906222.html

angular之Rxjs异步数据流编程入门相关推荐

  1. RxJS——异步数据流的响应式编程库(适合新手入门)

    文章目录 RxJS概述 Redux VS RxJS RxJS核心概念解析 热观察和冷观察 merge/combine合流 RXJS6 的变化 RxJS概述 RxJS 全称 Reactive Exten ...

  2. 【响应式编程的思维艺术】 (5)Angular中Rxjs的应用示例

    [摘要] Rxjs在angular中的基本应用 本文是[Rxjs 响应式编程-第四章 构建完整的Web应用程序]这篇文章的学习笔记. 示例代码托管在:http://www.github.com/das ...

  3. [译]函数式响应编程入门指南

    原文地址:An Introduction to Functional Reactive Programming 原文作者:Daniel Lew 译文出自:掘金翻译计划 本文永久链接:github.co ...

  4. 【Angular 4】响应式编程

    Rxjs? 响应式编程主要是通过观察者模式实现,在Angular中的Rxjs即是它的具体实现.它们的关系如下? 这个图只是简单的数据流,实际上,所有事物都可以用流处理,比如页面上的按钮点击事件: im ...

  5. linux操作系统下 c语言编程入门

    linux操作系统下 c语言编程入门 (一)目录介绍 1)Linux程序设计入门--基础知识 2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门 ...

  6. linux操作系统下c语言编程入门

    linux操作系统下c语言编程入门  整理编写:007xiong  原文:Hoyt等 (一)目录介绍 1)Linux程序设计入门--基础知识  2)Linux程序设计入门--进程介绍  3)Linux ...

  7. 【转贴】linux操作系统下c语言编程入门

    [转贴]linux操作系统下c语言编程入门 发信人: Lerry (驴是的念来过倒·杏红等头墙上爬), 信区: Linux 标 题: linux操作系统下c语言编程入门 发信站: 哈工大紫丁香 (Fr ...

  8. Linux网络编程 入门

    Linux网络编程入门 (转载) (一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍 客户端和服务端          网络程序和普通的程序有一个最大的区别是网络程序是由两个 ...

  9. Concurrency in C# Cookbook中文翻译 :1.3并发性概述:响应式编程入门(Rx)

    Introduction to Reactive Programming (Rx) 响应式编程入门(Rx) Reactive programming has a higher learning cur ...

最新文章

  1. Oracle SQL Tuning Advisor 测试
  2. 安装hbas_非常详细的HBase的安装与配置
  3. 初识java_初识java
  4. 解放你内心的自然领袖,从你的内心而非你的自我来领导你自己
  5. Office 365 批量创建用户步骤
  6. 将NetConf转成NormalizedNode对象及NormalizedNode对象转回NetConf(序列化与反序列化)
  7. 抽取python 标准库页面生成 mobi 离线文件
  8. JAva面试题(微信分享)
  9. android 根据时间获取周几_android 调用系统 calendars 如何获取一个指定日期的所有日程 event。...
  10. 利用VSCode阅读OpenFOAM源代码及其调试Debug【终极总结篇】
  11. JRockit JRCMD教程
  12. 校友邮箱_freeCodeCamp校友网络:FCC校友的自主指导网络
  13. python访问多个网页_如何使用python请求登录具有多个页面的CAS?
  14. nodepad++快捷键收集
  15. 2019 年 9 月全国程序员工资统计,你是什么水平?
  16. 通过dll来引用webservice的方法(.net)
  17. 人工智能一种现代化学习方法——学习笔记(13章)
  18. 最强PostMan使用教程(1)
  19. python竞赛猜名次_五人预测比赛结果均答对一半,求比赛名次
  20. LTE 终端如何申请 RB 资源以及现实面临的问题

热门文章

  1. constraintlayout布局新特性_安卓ConstraintLayout布局
  2. php mysql商品管理_PHP基础示例:商品信息管理系统v1.1[转]
  3. 一条正确的Java职业生涯规划,顺利拿到offer
  4. 【OpenCV的C++教程2】加载、修改、保存图像
  5. Pytorch框架的深度学习优化算法集(优化中的挑战)
  6. python【力扣LeetCode算法题库】35- 搜索插入位置
  7. 全卷积神经网路【U-net项目实战】论文中U-Net网络实现
  8. 修改服务器文件系统为xfs,CentOS Linux如何无损调整分区大小(XFS文件系统)
  9. c语言中的文件类型只有文本文件一种,C语言中的文件类型只有哪两种_后端开发...
  10. java 类成员访问权限_Java类成员访问权限控制知识总结