Rxjs--创建操作符
2019獨角獸企業重金招聘Python工程師標準>>>
創建操作符中除了repeat都是靜態方法直接從Rx.Observable上使用
取代回調函數(bindCallback、fromPromise)、直接創建(creat、Observable構造函數、from、of、fromEvent)、
惰性創建(defer)、范圍連續整數值(range)、連續整數(interval、timer)、重復(repeat)、
用于組合(never、empty、throw)
bindCallback
public static bindCallback(func: function, selector: function, scheduler: Scheduler): function(...params: *): Observable給它一個簽名為f(x, callback)的函數 f ,返回一個函數 g , 調用 'g(x)' 的時候會返回一個 Observable.
很重要的一點是,輸出函數返回的 Observable 被訂閱之前,輸入函數是不會執行的.
| 名稱 | 類型 | 屬性 | 描述 |
| func | function | ? | 最后一個參數是回調的函數。 |
| selector | function | 可選的 | 選擇器,從回調函數中獲取參數并將這些映射為一個 Observable 發出的值。 |
| scheduler | Scheduler | 可選的 | 調度器,調度回調函數。默認是同步的 |
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): Observableinterval?返回一個發出無限自增的序列整數, 你可以選擇固定的時間間隔進行發送。 第一次并 沒有立馬去發送, 而是第一個時間段過后才發出。 默認情況下, 這個操作符使用 async 調度器來 提供時間的概念,但也可以給它傳遞任意調度器。
| 名稱 | 類型 | 屬性 | 描述 |
| period | number |
| 時間間隔,它以毫秒為單位(默認),或者由調度器的內部時鐘決定的時間單位。 |
| scheduler | Scheduler |
| 調度器,用來調度值的發送并提供”時間“的概念。 |
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): Observablerange?操作符順序發出一個區間范圍內的連續整數, 你可以決定區間的開始和長度。 默認情況下, 不使用 調度器僅僅同步的發送通知, 但是也可以可選的使用可選的調度器來控制發送。
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 |
| 調度器,用來調度值的發送, 提供“時間”的概念。 |
就像是interval, 但是可以指定什么時候開始發送
轉載于:https://my.oschina.net/u/3412211/blog/1606564
總結
以上是生活随笔為你收集整理的Rxjs--创建操作符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DAY4-打卡第四天-2018-1-12
- 下一篇: ES6中this的三种用法