RxJS - 可观察的


observable 是一个创建观察者并将其附加到期望值的源的函数,例如,来自 dom 元素的单击、鼠标事件或 Http 请求等。

Observer 是一个具有回调函数的对象,当与 Observable 进行交互时,即源已与示例按钮单击、Http 请求等进行交互时,它将被调用。

我们将在本章中讨论以下主题 -

  • 创建可观察的
  • 订阅可观察的
  • 执行可观察的

创建可观察的

可以使用 observable 构造函数创建 observable,也可以使用 observable create 方法并将 subscribe 函数作为参数传递给它,如下所示 -

testrx.js

import { Observable } from 'rxjs';

var observable = new Observable(
   function subscribe(subscriber) {
      subscriber.next("My First Observable")
   }
);

我们创建了一个 observable,并使用Observable 中可用的subscriber.next方法添加了一条消息“My First Observable”。

我们还可以使用 Observable.create() 方法创建 Observable,如下所示 -

testrx.js

import { Observable } from 'rxjs';
var observer = Observable.create(
   function subscribe(subscriber) {
      subscriber.next("My First Observable")
   }
);

订阅可观察的

您可以按如下方式订阅可观察的内容 -

testrx.js

import { Observable } from 'rxjs';

var observer = new Observable(
   function subscribe(subscriber) {
      subscriber.next("My First Observable")
   }
);
observer.subscribe(x => console.log(x));

当观察者被订阅时,它将开始执行 Observable。

这是我们在浏览器控制台中看到的 -

订阅可观察的

执行可观察的

一个可观察量在被订阅后就会被执行。观察者是一个具有三个被通知方法的对象,

next() - 此方法将发送数字、字符串、对象等值。

Complete() - 此方法不会发送任何值并指示可观察对象已完成。

error() - 此方法将发送错误(如果有)。

让我们使用所有三个通知创建可观察对象并执行相同的操作。

testrx.js

import { Observable } from 'rxjs';
var observer = new Observable(
   function subscribe(subscriber) {
      try {
         subscriber.next("My First Observable");
         subscriber.next("Testing Observable");
         subscriber.complete();
      } catch(e){
         subscriber.error(e);
      }
   }
);
observer.subscribe(x => console.log(x), (e)=>console.log(e), 
   ()=>console.log("Observable is complete"));

在上面的代码中,我们添加了next、complete和error方法。

try{
   subscriber.next("My First Observable");
   subscriber.next("Testing Observable");
   subscriber.complete();
} catch(e){
   subscriber.error(e);
}

要执行下一步、完成和错误,我们必须调用 subscribe 方法,如下所示 -

observer.subscribe(x => console.log(x), (e)=>console.log(e), 
   ()=>console.log("Observable is complete"));

仅当出现错误时才会调用 error 方法。

这是在浏览器中看到的输出 -

执行可观察的