Rxswift Observable.of 和 Observable<String>.create 有什么区别

Rxswift What difference between Observable.of and Observable<String>.create

我是 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([=13=]) })
    .disposed(by: disposeBag)

但是当我用这种方式创建的时候。 即使我只有 2 个元素,Observer 也会发出。 我不知道有什么区别。

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

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

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")
    })