建立操做符中除了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, 可是能夠指定何時開始發送