建立操做符中除了repeat都是静态方法直接从Rx.Observable上使用html
取代回调函数(bindCallback、fromPromise)、直接建立(creat、Observable构造函数、from、of、fromEvent)、es6
惰性建立(defer)、范围连续整数值(range)、连续整数(interval、timer)、重复(repeat)、数组
用于组合(never、empty、throw)promise
public static bindCallback(func: function, selector: function, scheduler: Scheduler): function(...params: *): Observable
给它一个签名为f(x, callback)
的函数 f ,返回一个函数 g , 调用 'g(x)' 的时候会返回一个 Observable.async
很重要的一点是,输出函数返回的 Observable 被订阅以前,输入函数是不会执行的.函数
名称 | 类型 | 属性 | 描述 |
func | function | 最后一个参数是回调的函数。测试 |
|
selector | function | 可选的spa |
选择器,从回调函数中获取参数并将这些映射为一个 Observable 发出的值。code |
scheduler | Scheduler | 可选的server |
调度器,调度回调函数。默认是同步的 |
selector 函数接受和回调同样的参数,返回 Observable 发出的值。在默认状况下,传递给回调的多个参数将在流中显示为数组。选择器函数直接用参数调用,就像回调同样.
public static bindNodeCallback(func: function, selector: function, scheduler: Scheduler): *
就像是 bindCallback, 可是回调函数必须形如 callback(error, result)
.
从文件系统中读取文件而且从 Observable 中获取数据。 import * as fs from 'fs'; var readFileAsObservable = Rx.Observable.bindNodeCallback(fs.readFile); var result = readFileAsObservable('./roadNames.txt', 'utf8'); result.subscribe(x => console.log(x), e => console.error(e));
public static create(onSubscription: function(observer: Observer): TeardownLogic): Observable
建立一个新的 Observable, 当观察者( Observer )订阅该 Observable 时, 它会执行指定的函数.
public static defer(observableFactory: function(): SubscribableOrPromise): Observable
建立一个 Observable, 当被订阅的时候, 调用 Observable 工厂为每一个观察者建立新的 Observable. 延迟建立 Observable, 也就是说, 当且仅当它被订阅的时候才建立
public static empty(scheduler: Scheduler): Observable
仅仅发出 complete 通知,其余什么也不作
public static from(ish: ObservableInput<T>, scheduler: Scheduler): Observable<T>
从一个数组、类数组对象、Promise、迭代器对象或者类 Observable 对象建立一个 Observable
public static fromEvent(target: EventTargetLike, eventName: string, options: EventListenerOptions, selector: SelectorMethodSignature<T>): Observable<T>
建立一个来自于 DOM 事件,或者 Node 的 EventEmitter 事件或者其余事件的 Observable
public static fromEventPattern(addHandler: function(handler: Function): any, removeHandler: function(handler: Function, signal?: any): void, selector: function(...args: any): T): Observable<T>
将任何 addHandler/removeHandler 的API转化为 Observable
function addClickHandler(handler) { document.addEventListener('click', handler); } function removeClickHandler(handler) { document.removeEventListener('click', handler); }
public static fromPromise(promise: PromiseLike<T>, scheduler: Scheduler): Observable<T>
返回一个仅仅发出 Promise resolve 过的值而后完成的 Observable
Observable构造函数,和creat同样
public static interval(period: number, scheduler: Scheduler): Observable
interval
返回一个发出无限自增的序列整数, 你能够选择固定的时间间隔进行发送。 第一次并 没有立马去发送, 而是第一个时间段事后才发出。 默认状况下, 这个操做符使用 async 调度器来 提供时间的概念,但也能够给它传递任意调度器。
名称 | 类型 | 属性 | 描述 |
period | number |
|
时间间隔,它以毫秒为单位(默认),或者由调度器的内部时钟决定的时间单位。 |
scheduler | Scheduler |
|
调度器,用来调度值的发送并提供”时间“的概念。 |
public static never(): Observable
这个静态操做符对于建立既不发出数据也不触发错误和完成通知的 Observable。 能够用来测试或 者和其余 Observables进行组合。 注意,因为不会发送完成通知,这个 Observable 的 subscription 不会被自动地清理。Subscriptions 须要手动清理。
public static of(values: ...T, scheduler: Scheduler): Observable<T>
这个静态操做符适用于建立简单的 Observable, 该 Observable 只发出给定的参数, 在发送完这些参数后发出完成通知。它能够用来和其余 Observables 组合好比说concat。 默认状况下, 它使用null
调度器,这意味着next
通知是同步发出的, 尽管使用不一样的调度器能够决定这些通知什么时候送到。
public repeat(count: number): Observable
返回的 Observable 重复由源 Observable 所发出的项的流,重复 count 次
public repeatWhen(notifier: function(notifications: Observable): Observable): Observable
返回的 Observalbe 是源 Observable 的镜像,除了 complete
。若是源 Observable 调用了 complete
,这个方法会发出给 notifier
返回的 Observable 。若是这个 Observale 调用了 complete
或 error
,那么这个方法会在子 subscription 上调用 complete
或 error
。
let clicks = Rx.Observable.fromEvent(document, 'click'); let observable = Rx.Observable.of(1, 2); let subscription = observable.repeatWhen(() => clicks); subscription.subscribe(res => console.log(res));
public static range(start: number, count: number, scheduler: Scheduler): Observable
range
操做符顺序发出一个区间范围内的连续整数, 你能够决定区间的开始和长度。 默认状况下, 不使用 调度器仅仅同步的发送通知, 可是也能够可选的使用可选的调度器来控制发送。
public static throw(将具体的: any, scheduler: Scheduler): Observable
这个静态操做符对于建立简单的只发出错误通知的 Observable 十分有用。 能够被用来和其余 Observables 组合, 好比在 mergeMap 中使用
public static timer(initialDelay: number | Date, period: number, scheduler: Scheduler): Observable
initialDelay | number | Date | 在发出第一个值 0 以前等待的初始延迟时间。 |
|
period | number |
|
连续数字发送之间的时间周期。 |
scheduler | Scheduler |
|
调度器,用来调度值的发送, 提供“时间”的概念。 |
就像是interval, 可是能够指定何时开始发送