• Rxjs学习,结合angular(搁置,后续还会添加)


     

    1.Rxjs介绍

    是一种库,针对于异步数据流的一种编程工具,也叫响应式编程

    2.基本概念

    首先说明,这些基本概念单词,跟代码上重复的单词关系不大,只是rxjs中的一些基本概念

    Observable(可观察对象): 字如其名表示可观察对象,类似于一个事件中心, 比如下面的例子,给一个dom元素绑定了一input事件,进行一个对input事件的监听.

    // 从rxjs中引入observable
    import { Observable, Subscription } from 'rxjs'; 
    // 创建一个可观察对象,input$,并对其绑定一个input事件
    // node指的是一个dom节点
    const input$ = Observable.fromEvent(node, 'input');

    Observe(观察者): 表示一个回调函数的集合,上面已经对事件进行监听,并且返回了一个可观察对象Observable,那么观察者就是一个用来接收观察结果的函数,通过subcribe订阅了可观察对象input$, 观察者中包含了三种不同的回调函数,分别表示成功 失败 完成,

    当事件被触发的时候 如果observe能成功捕获新的值就会调用next 捕获失败会调用 error, complete则是取消订阅的一种方式.如果不取消的话这种订阅会一直存在.

    理解: Observable需要结合 observe一块使用才有效果 ,

    流程是 产生可观察对象, 将观察者 去订阅 可观察对象

    input$.subscribe({
      next: (event: any) => console.log(`You just typed ${event.target.value}!`),
      error: (err) => console.log(`Oops... ${err}`),
      complete: () => console.log(`Complete!`)
    });

    Subscription(订阅): 表示Observable的执行 主要用于取消Observable的执行,也就说是取消订阅的另一种方式

    const sub = input$.subscribe({
      next: (event: any) => console.log(`You just typed ${event.target.value}!`),
      error: (err) => console.log(`Oops... ${err}`),
      complete: () => console.log(`Complete!`)
    });
    sub.unsubscribe() // 取消订阅

    Operaors(操作符): 采用函数式编程风格的纯函数 使用像map filter这样的操作符来处理集合,主要是对可观察对象进行链式编程,这个应该很好理解

    Subject(主体): 相当于EventEmitter, (可以去看看angualr中的子传父的方式),这个比较适合用越传值,observable需要结合着observer才能实现订阅-发布的效果,但是这个subject可以自攻自受地实现效果看下面的案例

    @Injectable()
    export class MessageService {
     private subject = new Subject<any>(); //1. 产生主题对象
     send(message: any) {
       this.subject.next(message); // 1.1 通过主体对象 设置发送数据的方式 sub.next()
    }
     get(): Observable<any> {
       return this.subject.asObservable();// 1.2 通过主体对象 设置接收数据的方式 sub.asObservable
    }
    }
    +++++++++++++++++++++++++++++++++++++
    constructor(public srv: MessageService) { }
    ngOnInit() {
     this.srv.send('w s k f m?')  // 2. 调用方法 发送数据
    }
    ++++++++++++++++++++++++++++++++++++++++
    constructor(private srv: MessageService) {}
    message: any;
    ngOnInit() { // 注意点: 一定要进行订阅才可以接收到 这个数据
     this.srv.get().subscribe((result) => {  // 3.调用方法 接收数据
       this.message = result;
    })
    }

    Schedulers(调度器): 这个??? 我暂时还不是很明白 先这样吧 后续再进行添加

     

  • 相关阅读:
    【微信小程序】自定义模态框实例
    编程微刊第四期文章汇总(2018.4)
    ajax实现简单的点击左侧菜单,右侧加载不同网页
    JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
    bootstrap+fileinput插件实现可预览上传照片功能
    css实现悬浮效果的阴影
    推荐一款优雅高效的免费在线APP原型工具
    前端工程师提高工作效率的几个小技巧
    程序员常用的六大技术博客类
    程序媛,坚持这几个好习惯让你越来越美
  • 原文地址:https://www.cnblogs.com/shicongcong0910/p/14586043.html
Copyright © 2020-2023  润新知