Rxjs--创建操作符
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
創(chuàng)建操作符中除了repeat都是靜態(tài)方法直接從Rx.Observable上使用
取代回調(diào)函數(shù)(bindCallback、fromPromise)、直接創(chuàng)建(creat、Observable構(gòu)造函數(shù)、from、of、fromEvent)、
惰性創(chuàng)建(defer)、范圍連續(xù)整數(shù)值(range)、連續(xù)整數(shù)(interval、timer)、重復(repeat)、
用于組合(never、empty、throw)
bindCallback
public static bindCallback(func: function, selector: function, scheduler: Scheduler): function(...params: *): Observable給它一個簽名為f(x, callback)的函數(shù) f ,返回一個函數(shù) g , 調(diào)用 'g(x)' 的時候會返回一個 Observable.
很重要的一點是,輸出函數(shù)返回的 Observable 被訂閱之前,輸入函數(shù)是不會執(zhí)行的.
| 名稱 | 類型 | 屬性 | 描述 |
| func | function | ? | 最后一個參數(shù)是回調(diào)的函數(shù)。 |
| selector | function | 可選的 | 選擇器,從回調(diào)函數(shù)中獲取參數(shù)并將這些映射為一個 Observable 發(fā)出的值。 |
| scheduler | Scheduler | 可選的 | 調(diào)度器,調(diào)度回調(diào)函數(shù)。默認是同步的 |
selector 函數(shù)接受和回調(diào)一樣的參數(shù),返回 Observable 發(fā)出的值。在默認情況下,傳遞給回調(diào)的多個參數(shù)將在流中顯示為數(shù)組。選擇器函數(shù)直接用參數(shù)調(diào)用,就像回調(diào)一樣.
bindNodeCallback
public static bindNodeCallback(func: function, selector: function, scheduler: Scheduler): *就像是?bindCallback, 但是回調(diào)函數(shù)必須形如?callback(error, result).
從文件系統(tǒng)中讀取文件并且從 Observable 中獲取數(shù)據(jù)。 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創(chuàng)建一個新的 Observable, 當觀察者(?Observer?)訂閱該 Observable 時, 它會執(zhí)行指定的函數(shù).
defer
public static defer(observableFactory: function(): SubscribableOrPromise): Observable創(chuàng)建一個 Observable, 當被訂閱的時候, 調(diào)用 Observable 工廠為每個觀察者創(chuàng)建新的 Observable. 延遲創(chuàng)建 Observable, 也就是說, 當且僅當它被訂閱的時候才創(chuàng)建
empty
public static empty(scheduler: Scheduler): Observable僅僅發(fā)出 complete 通知,其他什么也不做
from
public static from(ish: ObservableInput<T>, scheduler: Scheduler): Observable<T>從一個數(shù)組、類數(shù)組對象、Promise、迭代器對象或者類 Observable 對象創(chuàng)建一個 Observable
fromEvent
public static fromEvent(target: EventTargetLike, eventName: string, options: EventListenerOptions, selector: SelectorMethodSignature<T>): Observable<T>創(chuàng)建一個來自于 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轉(zhuǎn)化為 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>返回一個僅僅發(fā)出 Promise resolve 過的值然后完成的 Observable
generate
Observable構(gòu)造函數(shù),和creat一樣
interval
public static interval(period: number, scheduler: Scheduler): Observableinterval?返回一個發(fā)出無限自增的序列整數(shù), 你可以選擇固定的時間間隔進行發(fā)送。 第一次并 沒有立馬去發(fā)送, 而是第一個時間段過后才發(fā)出。 默認情況下, 這個操作符使用 async 調(diào)度器來 提供時間的概念,但也可以給它傳遞任意調(diào)度器。
| 名稱 | 類型 | 屬性 | 描述 |
| period | number |
| 時間間隔,它以毫秒為單位(默認),或者由調(diào)度器的內(nèi)部時鐘決定的時間單位。 |
| scheduler | Scheduler |
| 調(diào)度器,用來調(diào)度值的發(fā)送并提供”時間“的概念。 |
never
public static never(): Observable這個靜態(tài)操作符對于創(chuàng)建既不發(fā)出數(shù)據(jù)也不觸發(fā)錯誤和完成通知的 Observable。 可以用來測試或 者和其他 Observables進行組合。 注意,由于不會發(fā)送完成通知,這個 Observable 的 subscription 不會被自動地清理。Subscriptions 需要手動清理。
of
public static of(values: ...T, scheduler: Scheduler): Observable<T>這個靜態(tài)操作符適用于創(chuàng)建簡單的 Observable, 該 Observable 只發(fā)出給定的參數(shù), 在發(fā)送完這些參數(shù)后發(fā)出完成通知。它可以用來和其他 Observables 組合比如說concat。 默認情況下, 它使用null調(diào)度器,這意味著next通知是同步發(fā)出的, 盡管使用不同的調(diào)度器可以決定這些通知何時送到。
repeat
public repeat(count: number): Observable返回的 Observable 重復由源 Observable 所發(fā)出的項的流,重復 count 次
repeatWhen
public repeatWhen(notifier: function(notifications: Observable): Observable): Observable返回的 Observalbe 是源 Observable 的鏡像,除了?complete?。如果源 Observable 調(diào)用了?complete,這個方法會發(fā)出給?notifier?返回的 Observable 。如果這個 Observale 調(diào)用了?complete?或?error,那么這個方法會在子 subscription 上調(diào)用?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?操作符順序發(fā)出一個區(qū)間范圍內(nèi)的連續(xù)整數(shù), 你可以決定區(qū)間的開始和長度。 默認情況下, 不使用 調(diào)度器僅僅同步的發(fā)送通知, 但是也可以可選的使用可選的調(diào)度器來控制發(fā)送。
throw
public static throw(將具體的: any, scheduler: Scheduler): Observable這個靜態(tài)操作符對于創(chuàng)建簡單的只發(fā)出錯誤通知的 Observable 十分有用。 可以被用來和其他 Observables 組合, 比如在?mergeMap?中使用
timer
public static timer(initialDelay: number | Date, period: number, scheduler: Scheduler): Observable| initialDelay | number?|?Date | ? | 在發(fā)出第一個值 0 之前等待的初始延遲時間。 |
| period | number |
| 連續(xù)數(shù)字發(fā)送之間的時間周期。 |
| scheduler | Scheduler |
| 調(diào)度器,用來調(diào)度值的發(fā)送, 提供“時間”的概念。 |
就像是interval, 但是可以指定什么時候開始發(fā)送
轉(zhuǎn)載于:https://my.oschina.net/u/3412211/blog/1606564
總結(jié)
以上是生活随笔為你收集整理的Rxjs--创建操作符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DAY4-打卡第四天-2018-1-12
- 下一篇: ES6中this的三种用法