Rxswift Observable.of和Observable <string> .create之间有什么区别

时间:2017-10-23 09:26:55

标签: rx-swift

我是rxSwift的新手。创建Observable时我发现了一些区别 Observable.ofObservable<String>.create

    Observable<String>.create { observer in

    observer.onNext("1")

    observer.onNext("2")

    return Disposables.create()
    }.take(3).toArray().subscribe(onNext: { (item) in
        print(item)
    }).disposed(by: disposeBag)

未发出的util至少收到3个事件。通过这种方式,观察者从未发射过。 但是:

    Observable.of("1", "2")
    // 2
    .take(3).toArray()
    .subscribe(onNext: {
        print($0) })
    .disposed(by: disposeBag)

但是当我以这种方式创造时。 即使我只有2个元素,Observer总是会发出。 我不知道有什么区别。

1 个答案:

答案 0 :(得分:2)

主要区别在于of也会发送已完成的事件。您可以查看下面的示例,第二个“已完成”将不会被调用。

您必须在observer.onCompleted()之后编写observer.onNext("2")才能拥有相同的逻辑。

Observable.of("1", "2").subscribe(onCompleted: {
    print("completed")
})

Observable<String>.create { observer in
        observer.onNext("1")
        observer.onNext("2")
        return Disposables.create()
    }
    .subscribe(onCompleted: {
        print("completed")
    })