Rxjs--建立操做符

建立操做符中除了repeat都是靜態方法直接從Rx.Observable上使用html

取代回調函數(bindCallback、fromPromise)、直接建立(creat、Observable構造函數、from、of、fromEvent)、es6

惰性建立(defer)、範圍連續整數值(range)、連續整數(interval、timer)、重複(repeat)、數組

用於組合(never、empty、throw)promise

bindCallback

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 發出的值。在默認狀況下,傳遞給回調的多個參數將在流中顯示爲數組。選擇器函數直接用參數調用,就像回調同樣.

bindNodeCallback

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));

create

public static create(onSubscription: function(observer: Observer): TeardownLogic): Observable

建立一個新的 Observable, 當觀察者( Observer )訂閱該 Observable 時, 它會執行指定的函數.

defer

public static defer(observableFactory: function(): SubscribableOrPromise): Observable

建立一個 Observable, 當被訂閱的時候, 調用 Observable 工廠爲每一個觀察者建立新的 Observable. 延遲建立 Observable, 也就是說, 當且僅當它被訂閱的時候才建立

empty

public static empty(scheduler: Scheduler): Observable

僅僅發出 complete 通知,其餘什麼也不作

from

public static from(ish: ObservableInput<T>, scheduler: Scheduler): Observable<T>

從一個數組、類數組對象、Promise、迭代器對象或者類 Observable 對象建立一個 Observable

fromEvent

public static fromEvent(target: EventTargetLike, eventName: string, options: EventListenerOptions, selector: SelectorMethodSignature<T>): Observable<T>

建立一個來自於 DOM 事件,或者 Node 的 EventEmitter 事件或者其餘事件的 Observable

fromEventPattern

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);
}

fromPromise

public static fromPromise(promise: PromiseLike<T>, scheduler: Scheduler): Observable<T>

返回一個僅僅發出 Promise resolve 過的值而後完成的 Observable

generate

Observable構造函數,和creat同樣

interval

public static interval(period: number, scheduler: Scheduler): Observable

interval 返回一個發出無限自增的序列整數, 你能夠選擇固定的時間間隔進行發送。 第一次並 沒有立馬去發送, 而是第一個時間段事後才發出。 默認狀況下, 這個操做符使用 async 調度器來 提供時間的概念,但也能夠給它傳遞任意調度器。

名稱 類型 屬性 描述
period number
  • 可選的
  • 默認值: 0

時間間隔,它以毫秒爲單位(默認),或者由調度器的內部時鐘決定的時間單位。

scheduler Scheduler
  • 可選的
  • 默認值: async

調度器,用來調度值的發送並提供」時間「的概念。

never

public static never(): Observable

這個靜態操做符對於建立既不發出數據也不觸發錯誤和完成通知的 Observable。 能夠用來測試或 者和其餘 Observables進行組合。 注意,因爲不會發送完成通知,這個 Observable 的 subscription 不會被自動地清理。Subscriptions 須要手動清理。

of

public static of(values: ...T, scheduler: Scheduler): Observable<T>

這個靜態操做符適用於建立簡單的 Observable, 該 Observable 只發出給定的參數, 在發送完這些參數後發出完成通知。它能夠用來和其餘 Observables 組合好比說concat默認狀況下, 它使用null調度器,這意味着next通知是同步發出的, 儘管使用不一樣的調度器能夠決定這些通知什麼時候送到。

repeat

public repeat(count: number): Observable

返回的 Observable 重複由源 Observable 所發出的項的流,重複 count 次

repeatWhen

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));

range

public static range(start: number, count: number, scheduler: Scheduler): Observable

range 操做符順序發出一個區間範圍內的連續整數, 你能夠決定區間的開始和長度。 默認狀況下, 不使用 調度器僅僅同步的發送通知, 可是也能夠可選的使用可選的調度器來控制發送。

throw

public static throw(將具體的: any, scheduler: Scheduler): Observable

這個靜態操做符對於建立簡單的只發出錯誤通知的 Observable 十分有用。 能夠被用來和其餘 Observables 組合, 好比在 mergeMap 中使用

timer

public static timer(initialDelay: number | Date, period: number, scheduler: Scheduler): Observable
initialDelay number | Date  

在發出第一個值 0 以前等待的初始延遲時間。

period number
  • 可選的

連續數字發送之間的時間週期。

scheduler Scheduler
  • 可選的
  • 默認值: async

調度器,用來調度值的發送, 提供「時間」的概念。

就像是interval, 可是能夠指定何時開始發送

相關文章
相關標籤/搜索