RxSwift Creating

关于建立Observable

#1 Create

您能够使用create操做符从零开始建立一个可观察对象,传递给这个操做符一个函数,该函数接受observer做为其参数,经过适当地调用observeronNextonErroronCompleted方法,将这个函数编写为一个可观察的函数。 须要注意的是一个结构良好的Observable必须调用一次observeronCompletedonError方法,而且此后不能尝试调用observer的任何其余方法。git

let source : Observable = Observable.create { observer in
    for i in 1...5 {
        observer.on(.next(i))
    }
    observer.on(.completed)
    return Disposables.create {
        print("disposed")
    }
}

source.subscribe {
    print($0)
}
/*----- next(1) next(2) next(3) next(4) next(5) completed disposed */ 
复制代码

#2 Empty/Never

Empty github

建立一个不发出任何项但正常终止的Observable(调用onCompleted)数组

Never 建立一个不发出任何项且不终止的可观察对象函数

Empty/Never这些对于测试目的颇有用,有时也能够与其余可观测值结合使用,或者做为指望其余可观测值做为参数的操做符的参数。测试

let never = Observable<Any>.never()
    
let empty = Observable<Any>.empty()
    
    
never.subscribe { (event) in
    print("never")
    print(event)
}
.disposed(by: bag)
    
empty.subscribe { (event) in
    print("empty")
    print(event)
}
.disposed(by: bag)

/*------ empty completed */ 
复制代码

#3 From

做用将各类其余对象和数据类型转换为可观察的ui

let anyArray : [Any] = ["string", 1 , 0.3]

let source = Observable.from(anyArray)

source.subscribe {
    print($0)
}

/*---------- next(string) next(1) next(0.3) completed */ 
复制代码

#4 Interval

建立一个Observable,它发出一个按给定时间间隔间隔的整数序列 Interval操做符返回一个可观察到的值,该值发出一个无限的升序整数序列,在两次发射之间选择一个固定的时间间隔。spa

Observable<Int>.interval(1.0, scheduler: MainScheduler.instance)
    .subscribe {
        print($0)
    }
    .disposed(by: bag)
//每1秒发送一次从0开始升序的整数
复制代码

#5 Just

建立一个发出特定值的Observable 与From类型,但要注意From会将数组里的元素取出再发送出去,而Just只是简单的将数组或对象做为一个单独值发送出去。code

let source = Observable.just(1, 2, 3)

source.subscribe {
    print($0)
}

let source2 = Observable.just([1,2,3])

source2.subscribe {
    print($0)
}
/* ------ next((1, 2, 3)) completed next([1, 2, 3]) completed */ 
复制代码

#6 Range

建立一个Observable,该对象发出特定范围的序列整数cdn

Observable.range(start: 1, count: 3)
    .subscribe{
        print($0)
    }
    .disposed(by: bag)
    
/*------ next(1) next(2) next(3) completed */ 
复制代码

#7 Repeat

建立一个Observable,该对象屡次发出特定的项 server

该操做符重复发送一个项。

#8 Timer

建立一个Observable,它在给定的延迟以后发出特定的项

//5秒后发送一个Int值
Observable<Int>.timer(5, scheduler: MainScheduler.instance)
    .subscribe {
        print($0)
    }
    .disposed(by: bag)
/*------- next(0) completed */
复制代码

#9 Of

此方法建立一个Observable,该实例具备可变数量的元素。 功能与From相同,From接受数组为元素,Of接受可变数量的元素

let ofObservable = Observable<Any>.of(1,"test",0.3)

ofObservable.subscribe{
    print($0)
}
.disposed(by: bag)

/*------------- next(1) next(test) next(0.3) completed */
复制代码

文章出处

相关文章
相关标签/搜索