ReactiveX 学习笔记(5)合并数据流
Combining Observables
本文的主题为合并 Observable 的操作符。
这里的 Observable 实质上是可观察的数据流。
And/Then/When
ReactiveX - And/Then/When operator
Reactive Extensions再入門 その44「And, Then, Whenメソッド」
And/Then/When 将两个或多个数据流的数据通过 Pattern 和 Plan 中间量合为一体。
And/Then/When 操作符中数据结合的方法为将所有源数据流的第 1 个数据结合,然后再将所有源数据流的第 2 个数据结合,以此类推,直到某一个源数据流没有数据为止。

- RxNET
var one = Observable.Interval(TimeSpan.FromSeconds(1)).Take(5);
var two = Observable.Interval(TimeSpan.FromMilliseconds(250)).Take(10);
var three = Observable.Interval(TimeSpan.FromMilliseconds(150)).Take(14);
var zippedSequence = Observable.When(
    one.And(two)
    .And(three)
    .Then((first, second, third) =>
    new {
        One = first,
        Two = second,
        Three = third
    })
);
zippedSequence.Subscribe(
Console.WriteLine,
() => Console.WriteLine("Completed"));
Console.ReadLine();
/*
{ One = 0, Two = 0, Three = 0 }
{ One = 1, Two = 1, Three = 1 }
{ One = 2, Two = 2, Three = 2 }
{ One = 3, Two = 3, Three = 3 }
{ One = 4, Two = 4, Three = 4 }
Completed
*/
CombineLatest
ReactiveX - CombineLatest operator
Reactive Extensions再入門 その41「どんどん合成するよ」
CombineLatest 将两个数据流中的最新数据通过调用指定函数合为一体。

- RxNET
var source1 = new Subject<string>();
var source2 = new Subject<int>();
source1
    .CombineLatest(
        source2,
        (l, r) => string.Format("{0}-{1}", l, r))
    .Subscribe(
        s => Console.WriteLine("OnNext: {0}", s),
        () => Console.WriteLine("OnCompleted"));
Console.WriteLine("source1.OnNext(foo)");
source1.OnNext("foo");
Console.WriteLine("source2.OnNext(100)");
source2.OnNext(100);
Console.WriteLine("source2.OnNext(200)");
source2.OnNext(200);
Console.WriteLine("source1.OnNext(bar)");
source1.OnNext("bar");
Console.WriteLine("source1.OnNext(boo)");
source1.OnNext("boo");
Console.WriteLine("source1.OnCompleted()");
source1.OnCompleted();
Console.WriteLine("source2.OnNext(999)");
source2.OnNext(999);
Console.WriteLine("source2.OnCompleted()");
source2.OnCompleted();
/*
source1.OnNext(foo)
source2.OnNext(100)
OnNext: foo-100
source2.OnNext(200)
OnNext: foo-200
source1.OnNext(bar)
OnNext: bar-200
source1.OnNext(boo)
OnNext: boo-200
source1.OnCompleted()
source2.OnNext(999)
OnNext: boo-999
source2.OnCompleted()
OnCompleted
*/
- RxJava
Observables.combineLatest(
    Observable.interval(100, TimeUnit.MILLISECONDS)
        .doOnNext { i -> println("Left emits") },
    Observable.interval(150, TimeUnit.MILLISECONDS)
        .doOnNext { i -> println("Right emits") })
    { i1, i2 -> i1.toString() + " - " + i2 }
    .take(6)
    .dump()
/*
Left emits
Right emits
onNext: 0 - 0
Left emits
onNext: 1 - 0
Left emits
Right emits
onNext: 2 - 0
onNext: 2 - 1
Left emits
onNext: 3 - 1
Right emits
onNext: 3 - 2
onComplete
*/
- RxSwift
let disposeBag = DisposeBag()
let stringSubject = PublishSubject<String>()
let intSubject = PublishSubject<Int>()
Observable.combineLatest(stringSubject, intSubject) { stringElement, intElement in
        "\(stringElement) \(intElement)"
    }
    .subscribe(onNext: { print($0) })
    .disposed(by: disposeBag)
stringSubject.onNext("												
											ReactiveX 学习笔记(5)合并数据流的更多相关文章
	
						- ReactiveX 学习笔记(0)学习资源
		ReactiveX 学习笔记 ReactiveX 学习笔记(1) ReactiveX 学习笔记(2)创建数据流 ReactiveX 学习笔记(3)转换数据流 ReactiveX 学习笔记(4)过滤数据 ... 
- ReactiveX 学习笔记(7)聚合操作符
		Mathematical and Aggregate Operators 本文的主题为处理 Observable 的聚合操作符. 这里的 Observable 实质上是可观察的数据流. RxJava操 ... 
- ReactiveX 学习笔记(3)转换数据流
		Transforming Observables 本文的主题为转换 Observable 的操作符. 这里的 Observable 实质上是可观察的数据流. RxJava操作符(二)Transform ... 
- ReactiveX 学习笔记(10)可连接的数据流
		Connectable Observable Operators 本文的主题为处理 Connectable Observable 的操作符. 这里的 Observable 实质上是可观察的数据流. R ... 
- ReactiveX 学习笔记(4)过滤数据流
		Filtering Observables 本文主题为过滤 Observable 的操作符. 这里的 Observable 实质上是可观察的数据流. RxJava操作符(三)Filtering Deb ... 
- ReactiveX 学习笔记(2)创建数据流
		操作符(Operators) Rx 的操作符能够操作(创建/转换/组合) Observable. Creating Observables 本文主题为创建/生成 Observable 的操作符. 这里 ... 
- ReactiveX 学习笔记(12)调度器
		Schedulers, threading and testing 本文的主题为调度器,多线程以及测试. RxJava操作符(六)Utility SubscribeOn / ObserveOn Sub ... 
- ReactiveX 学习笔记(9)工具类操作符
		Observable Utility Operators 本文的主题为处理 Observable 的实用工具类操作符. 这里的 Observable 实质上是可观察的数据流. RxJava操作符(六) ... 
- ReactiveX 学习笔记(8)错误处理和 To 操作符
		Error Handling Operators Operators to Convert Observables 本文的主题为对 Observable 进行错误处理的操作符以及转换 Observab ... 
随机推荐
	
									- [UE4]Canvas Panel应用小技巧
			当设置为满屏拉伸的时候,只要把“偏移左侧”和“偏移底部”都设置为0,就会自动拉伸为整屏了.再也不需要手动担心拉不满屏了. 
- Js学习(1)
			数据类型 简单数据类型 ◆number   数字类型 ◆string     字符串类型 ◆Boolean   布尔类型 ◆true      真 (正确的) ◆false     假(错误的) ◆u ... 
- ArcMap VBA实现连续编号
			连续编号VBA部分:Static lCount as longlCount=lCount+1赋值部分:lCount (从1开始)lCount-1 (从0开始) 
- android websocket
			https://github.com/TakahikoKawasaki/nv-websocket-client 
- Linux在线安装git
			一.先检测是否已安装git#rpm -qa | grep zlib-devel 二.提前 安装gcc#yum install gcc 三.具体安装命令 Git下载路径:https://www.kern ... 
- selenuim和phantonJs处理网页动态加载数据的爬取
			一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 #!/usr/bin/env python # -*- coding:utf-8 -* ... 
- Java - 22 Java 多态
			Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力. 多态性是对象多种表现形式的体现. 比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫.小狗.蜥蜴 ... 
- es6(13)--Promise
			//Promise { //原始方法 let ajax=function(callback){ console.log('执行') setTimeout(function(){ callback&am ... 
- MYSQL--表分区、查看分区
			  一.       mysql分区简介 数据库分区 数据库分区是一种物理数据库设计技术.虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时 ... 
- NodeJs安装以及注意事项
			1.测试NodeJs是否安装成功 node --version npm -v 配置node的可执行文件路径到环境变量path 2.安装相关环境 npm install express -g npm i ... 
