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): 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, 但是可以指定什么时候开始发送

转载于:https://my.oschina.net/u/3412211/blog/1606564

Rxjs--创建操作符相关推荐

  1. RxJS——创建数据流

    介绍: 在RxJS的世界中,一切都以数据流为中心,在代码中,数据流以Observable类的实例对象形式存在,创建Observable对象就是数据流处理的开始. 所谓创建类操作符,就是在不依赖于其他O ...

  2. RxJava 之创建操作符

    RxJava 的创建操作符主要包括如下内容: just():将一个或多个对象转换成发射这个或这些对象的一个 Observable from():将一个 Iterable.一个 Future 或者一个数 ...

  3. Android RxJava操作符的学习---创建操作符

    RxJava如此受欢迎的原因,在于其提供了丰富 & 功能强大的操作符,几乎能完成所有的功能需求 1. 简介 RxJava 操作符的具体简介如下: 2. 类型 RxJava功能强大,所以其对应的 ...

  4. RxJs SwitchMapTo 操作符之移花接木

    将每个源值投影到同一个 Observable,该 Observable 在输出 Observable 中使用 switchMap 多次展平. 输入一个 Observable,输出一个 function ...

  5. Rxjs debounce 操作符在 SAP Spartacus 函数节流中的一个实际使用例子

    在 window-ref.ts 的实现里,定义了一个每隔 300 毫秒,通过 fromEvent 发射一个 resize event 的Observable: /*** Returns an obse ...

  6. 《记》rxjs分流操作符简单实现

    分流即将一个流分成多个流!应该属于组合操作符.发现并没有类似功能操作符,合并流居多,如果有读者发现有类似分流操作符,可以告知我!在此感谢! 类似功能 filter,filter的作用是过滤掉部分杂质, ...

  7. Android RxJava操作符的学习---创建操作符--(无条件)网络请求轮询

    1. 需求场景 2. 功能说明 本文将采用Get方法对 金山词霸API 按规定时间 重复发送网络请求,从而模拟 轮询 需求实现 采用 Gson 进行数据解析 3. 具体实现 下面结合 Retrofit ...

  8. rxjs of操作符里subscribeToArray的实现原理示意图及分析

    写一段简单的代码来测试subscribeToArray: test1(){const subscribeToArray = (array) => (subscriber) => {for ...

  9. rxjs of操作符生成的Observable对象的执行详细分析

    代码: const a = of([1, 2, 3]); a.subscribe((data) => console.log('Fairy:' + data)); 单步调试,首先执行of所在的i ...

  10. rxjs of操作符传入数组的单步执行

    源代码: const a = of([1, 2, 3]);const b = a.pipe(map((data) => {for( let i = 0; i < data.length; ...

最新文章

  1. AWS之EC2实例搭建LAMP服务器
  2. 前端一HTML:十九继承的特殊性
  3. 如何查看进程的运行路径
  4. Linux共享文件夹中毒,linux服务器中毒利用Find查找病毒例子
  5. html5常用插件大全,前端常用插件utils汇总
  6. ae中心点重置工具_AE中图形绘制的6大技巧,简单易操作
  7. bind_param 类怎么写_情感类自媒体怎么写?你不知道的情感类文章4大禁忌!
  8. php获取qq音乐的api类,QQ音乐api接口梳理
  9. 网易互娱游戏研发工程师笔试
  10. UE4C++新建文件夹
  11. QML类型:Window
  12. 家政服务:保姆朋友圈鄙视链在上海
  13. win10激活错误,软件授权服务报告无法激活计算机怎么办?
  14. [PTA]练习5-3 数字金字塔
  15. 2011推荐系统论坛游记:爱的反义词不是恨
  16. 强化学习1-思想及分类
  17. 软件园三区VR虚拟漫游实训项目规划
  18. 肯耐珂萨荣登36氪WISE 2020企服金榜
  19. 凯斯西储大学(CWR) 轴承数据
  20. 为WebSphere Application Server开发企业OSGi应用程序

热门文章

  1. Spring Boot(一) 自动装配--约定大于配置
  2. Java如何调用dll
  3. UVA 10305 Ordering Tasks (拓扑排序)
  4. DHTML【8】--CSS
  5. EAR部署websphere步骤
  6. [转]C#遍历局域网的几种方法及比较
  7. MYSQL 设计数据结构注意事项
  8. Hadoop伪分布式运行案例
  9. 一个教务系统多少钱_销售管理系统报价多少钱
  10. -Git 使用技巧 总结 MD