阅读(1757) 赞(2)

RxJS Observable

2020-09-27 13:58:00 更新

表示在任何时间量内的任何一组值。这是 RxJS 的最基本构建块。

class Observable<T> implements Subscribable {
  static create: Function
  static if: typeof iif
  static throw: typeof throwError
  constructor(subscribe?: (this: Observable<T>, subscriber: Subscriber<T>) => TeardownLogic)
  _isScalar: boolean
  source: Observable<any>
  operator: Operator<any, T>
  lift<R>(operator: Operator<T, R>): Observable<R>
  subscribe(observerOrNext?: NextObserver<T> | ErrorObserver<T> | CompletionObserver<T> | ((value: T) => void), error?: (error: any) => void, complete?: () => void): Subscription
  _trySubscribe(sink: Subscriber<T>): TeardownLogic
  forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise<void>
  pipe(...operations: OperatorFunction<any, any>[]): Observable<any>
  toPromise(promiseCtor?: PromiseConstructorLike): Promise<T>
}

子类

  • ConnectableObservable
  • GroupedObservable
  • Subject
    • BehaviorSubject
    • ReplaySubject
    • AsyncSubject

静态特性

属性 类型 描述
创造 Function 通过调用 Observable 构造函数创建一个新的 Cold Observable
如果 typeof iif
throw typeof throwError

建设者

constructor(subscribe?: (this: Observable<T>, subscriber: Subscriber<T>) => TeardownLogic)参量订阅可选的。默认值为 undefined。最初订阅 Observable 时调用的函数。该函数被赋予一个订阅者,可以为其输入新值 next,或者 error 可以调用一个方法来引发错误,或者 complete 可以调用一个方法 来通知成功完成。

物产

属性 类型 描述
_isScalar boolean 内部实现细节,请勿直接使用。
资源 Observable<any>
算子 Operator<any, T>

方法

电梯() 创建一个新的 Observable,将其作为源,并将传递的运算符定义为新的 Observable 的运算符。 lift<R>(operator: Operator<T, R>): Observable<R>

参量: 类型:
算子 定义要执行的操作的操作员
returnsObservable<R>:应用了运算符的新观测值

订阅() 调用 Observable 的执行并注册 Observer 处理程序以获取其发出的通知。 5重载...subscribe(observer?: PartialObserver<T>): Subscription

参量: 类型:
观察者 可选的。默认值为undefined。类型:PartialObserver

returnsSubscription

subscribe(next: null, error: null, complete: () => void): Subscription

参量: 类型:
下一个 类型:null
错误 类型:null
完成 类型:() => void

returnsSubscription``subscribe(next: null, error: (error: any) => void, complete?: () => void): Subscription

参量: 类型:
下一个 类型:null
错误 类型:(error: any) => void
完成 可选的。默认值为undefined。类型:() => void

returns Subscription``subscribe(next: (value: T) => void, error: null, complete: () => void): Subscription

参量: 类型:
下一个 类型:(value: T) => void
错误 类型:null
完成 类型:() => void

returnsSubscription``subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Subscription

参量: 类型:
下一个 可选的。默认值为undefined。类型:(value: T) => void
错误 可选的。默认值为undefined。类型:(error: any) => void
完成 可选的。默认值为undefined。类型:() => void
returns Subscription

当您拥有所有这些 Observable 时,请使用它,但仍然没有任何反应。subscribe不是常规运算符,而是调用 Observable 内部 subscribe 函数的方法。例如,它可能是传递给 Observable 的构造函数的函数,但是在大多数情况下,它是库实现,它定义 Observable 将发出的内容以及何时发出。这意味着调用 subscribe 实际上是 Observable 开始其工作的时刻,而不是通常被认为是创建的时刻。除了开始执行 Observable 之外,此方法还允许您侦听 Observable 发出的值以及完成或发生错误的时间。您可以通过以下两种方式来实现。第一种方法是创建一个实现 Observer 接口的对象。它应该具有由该接口定义的方法,但是请注意,它应该只是一个常规的 JavaScript 对象,您可以按照自己想要的任何方式(ES6 类,经典函数构造函数,对象文字等)创建自己。特别是不要尝试使用任何 RxJS 实现细节来创建观察者-您不需要它们。还要记住,您的对象不必实现所有方法。如果发现自己创建了一种不执行任何操作的方法,则可以简单地忽略它。但是请注意,如果 error 未提供该方法,则所有错误都将保留。第二种方法是完全放弃 Observer 对象,仅提供回调函数代替其方法。这意味着您可以提供三个函数作为的参数 subscribe,其中第一个函数等效于 next 方法,第二个函数等效于方法,error 第三个函数等效于 complete 方法。与 Observer 一样,如果不需要监听某些内容,则可以省略函数,最好通过 undefined 或 null,因为 subscribe 可以通过将它们放在函数调用中的位置来识别它们。当涉及到 error 功能时,就像以前一样(如果未提供),将抛出 Observable 发出的错误。无论 subscribe 使用哪种调用方式,在两种情况下都将返回 Subscription 对象。该对象允许您对其进行调用unsubscribe,这将停止 Observable 所做的工作,并清除 Observable 使用的所有资源。请注意,取消订阅不会调用 complete 提供给 subscribe 函数的回调,该回调保留给来自 Observable 的常规完成信号。请记住,提供给的回调 subscribe 不能保证被异步调用。它是一个 Observable 本身,它决定何时调用这些函数。例如 of ,默认情况下会同步发出其所有值。始终检查文档以了解给定的 Observable 在订阅时的行为,以及是否可以使用修改其默认行为 scheduler。

例

订阅观察者

import { of } from 'rxjs';


const sumObserver = {
  sum: 0,
  next(value) {
    console.log('Adding: ' + value);
    this.sum = this.sum + value;
  },
  error() {
    // We actually could just remove this method,
    // since we do not really care about errors right now.
  },
  complete() {
    console.log('Sum equals: ' + this.sum);
  }
};


of(1, 2, 3) // Synchronously emits 1, 2, 3 and then completes.
  .subscribe(sumObserver);


// Logs:
// "Adding: 1"
// "Adding: 2"
// "Adding: 3"
// "Sum equals: 6"

订阅功能

import { of } from 'rxjs'


let sum = 0;


of(1, 2, 3).subscribe(
  value => {
    console.log('Adding: ' + value);
    sum = sum + value;
  },
  undefined,
  () => console.log('Sum equals: ' + sum)
);


// Logs:
// "Adding: 1"
// "Adding: 2"
// "Adding: 3"
// "Sum equals: 6"

取消订阅

import { interval } from 'rxjs';


const subscription = interval(1000).subscribe(
  num => console.log(num),
  undefined,
  () => {
    // Will not be called, even when cancelling subscription.
    console.log('completed!');
  }
);


setTimeout(() => {
  subscription.unsubscribe();
  console.log('unsubscribed!');
}, 2500);


// Logs:
// 0 after 1s
// 1 after 2s
// "unsubscribed!" after 2.5s

_trySubscribe() _trySubscribe(sink: Subscriber<T>): TeardownLogic

参量 类型
sink Subscriber
returnsTeardownLogic

forEach()
forEach(next: (value: T) => void, promiseCtor?: PromiseConstructorLike): Promise<void>参量下一个可观察对象发出的每个值的处理程序 PromiseCtor 可选的。默认值为 undefined。用于实例化 Promise 的构造函数
Promise<void>:一个承诺,可以解决可观察的完成,或者拒绝已处理的错误

pipe()
用于将功能运算符缝合在一起。 -
11 overloads...pipe(): Observable<T>参量没有参数。

returns`Observable

`pipe<A>(op1: OperatorFunction<T, A>): Observable<A>

参量 类型
op1 类型:OperatorFunctionreturns`Observable<A>``pipe<A, B>(op1: OperatorFunction<T, A>
op2 OperatorFunction<A, B>): Observable<B>`
参量 类型
op1 类型:OperatorFunction
op2 类型:OperatorFunctionreturnsObservable|<B>``pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C>
参量 类型
op1 类型:OperatorFunction
op2 类型:OperatorFunction
op3 类型:OperatorFunctionreturns`Observable

<C>`pipe<A, B, C, D>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>): Observable<D>

参量 类型
p1 类型:OperatorFunction
op2 类型:OperatorFunction
op3 类型:OperatorFunctionop4
类型: OperatorFunctionreturnsObservable|<D>``pipe<A, B, C, D, E>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>): Observable<E>
参量 类型
op1 类型:OperatorFunction
op2 类型:OperatorFunction
op3 类型:OperatorFunction
op4 类型:OperatorFunction
op5 类型:OperatorFunctionreturns`Observable

<E>`pipe<A, B, C, D, E, F>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>): Observable<F>

参量 类型
op1 类型:OperatorFunction
op2 类型:OperatorFunction
op3 类型:OperatorFunction
op4 类型:OperatorFunction
op5 类型:OperatorFunction
op6 类型:OperatorFunctionreturns`Observable

<F>`pipe<A, B, C, D, E, F, G>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>): Observable<G>

参量 类型
op1 类型:OperatorFunction
op2 类型:OperatorFunction
op3 类型:OperatorFunction
op4 类型: OperatorFunction
op5 类型: OperatorFunction
op6 类型: OperatorFunction
op7 类型:OperatorFunctionreturns`Observable

<G>`pipe<A, B, C, D, E, F, G, H>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>): Observable<H>

参量 类型
op1 类型:OperatorFunction
op2 类型:OperatorFunction
op3 类型:OperatorFunction
op4 类型:OperatorFunction
op5 类型:OperatorFunction
op6 类型:OperatorFunction
op7 类型:OperatorFunction
op8 类型:OperatorFunctionreturns`Observable

<H>`pipe<A, B, C, D, E, F, G, H, I>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>): Observable<I>

参量 类型
op1 类型:OperatorFunction
op2 类型:OperatorFunction
op3 类型:OperatorFunction
op4 类型:OperatorFunction
op5 类型:OperatorFunction
op6 类型:OperatorFunction
op7 类型:OperatorFunction
op8 类型:OperatorFunction
op9 类型:OperatorFunctionreturns`Observable

<I>`pipe<A, B, C, D, E, F, G, H, I>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, ...operations: OperatorFunction<any, any>[]): Observable<{}>

参量 类型
p1 类型:OperatorFunction
op2 类型:OperatorFunction
op3 类型:OperatorFunction
op4 类型:OperatorFunction
op5 类型:OperatorFunction
op6 类型:OperatorFunction
op7 类型:OperatorFunction
op8 类型:OperatorFunction
op9 类型:OperatorFunction
运作 类型:OperatorFunction[]returnsObservable<{}>

承诺() 3重载...toPromise<T>(): Promise<T>参量没有参数。returnsPromise<T>``toPromise<T>(PromiseCtor: any): Promise<T>

参量 类型
承诺者 类型:any

returnsPromise<T>``toPromise<T>(PromiseCtor: PromiseConstructorLike): Promise<T>

参量 类型
承诺者 类型:PromiseConstructorLike。returnsPromise<T>