RxJS入门——基础操作指北

本文是RxJS入门教程,详细介绍了RxJS的设计思想、基础用法,包括Observable、Observer、Subject和各种操作符,如from、fromEvent、delay等。还探讨了Scheduler调度器在控制Observable发射时间上的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RxJS入门——基础操作指北


本章所基于的RxJS的版本问5.5.9,在本章中介绍RxJS的基础知识,比如Observable、Observer、Subscription、Subject以及Operation等

  • 了解RxJS的设计思想
  • 掌握RxJS的基础用法
  • 梳理RxJS的接口API

一、RxJS的设计思想

简单理解RxJS的设计思想,之前实现了PromiseA+规范下的promise,创建一个Promise后,有一个状态的初始值pending,两个状态的改变值,fullfilled和rejected.在Promise的订阅机制中,一旦状态发生改变,状态的改变就是不可逆的.而RxJS不同,Observable相当于一个消息生成器,给消息生成器设置处理函数,通过消息生成器传递信息给处理函数,处理函数作为订阅者执行相应的逻辑,并返回结果.

因为Observable这个消息生成器是多值的,因此订阅者执行后返回的值也是多值的。

二、RxJS的基本用法

来看RxJS的基本用法,简单的介绍Observable、Observer、Subscription、Subject以及Operation的使用

1.Observable、Observer

(1)首先来看基本的用法,

第一步创建可观察对象:

import Rx from 'rxjs/Rx';
const observable=Rx.Observable.create(
 function  subscribe(observer){
       try{
         observer.next(1);
         observer.next(2);
         observer.next(3);
         observer.complete();
       }catch(e){
         observer.error(e);
       }
})

在每一个可观察对象中会推送消息给订阅者,比如在上述函数中通过在next、complete和error方法中传递参数的形式将消息推送给订阅者。

第二步,创建订阅者

const observer={
  next:x=>console.log(x),
  error:error=>console.log(error),
  complete:()=>console.log('Observer got a complete notification')
}

订阅者有几个函数属性,用于接受可观察对象中的值并执行。

第三步,建立观察订阅关系:

observable.subscribe(observer);

执行返回的结果为:

1
2
3
Observer got a complete notification
(2)Observable异步推送
const observable=Rx.Observable.create(function              subscribe(observer){
       try{
         observer.next(1);
         observer.next(2);
         observer.next(3);
         setTimeout(()=>{
           observer.next(4)
         },1000)
       }catch(e){
         observer.error(e);
       }
});
const observer={
  next:x=>console.log(x),
  error:error=>console.log(error),
  complete:()=>console.log('Observer got a complete notification')
}
console.log('before');
observable.subscribe(observer);
console.log('after');

通过setTimeout异步推送值给next方法,输出结果为:

before
1
2
3
after
4
(3)取消Observable的订阅
var subscription = observable.subscribe(observer);
subscription.unsubscribe();

2. Subject

(1)基础用法

RxJS中的Subject是一种特殊的Observable,通过Subject定义的可观察对象可以被多个Observer订阅.


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值