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

删除回忆录丶 提交于 2019-12-10 10:36:15

问题


I'm a newbie in rxSwift. I found some difference when create Observable by Observable.of and Observable<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)

Not emitted util received at least 3 event. In this way observer never emitted. But with:

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

But when i create by this way. Observer always emitted even if i just have 2 elements. I don't known what difference.


回答1:


The main difference is that of sends a completed event as well. You can check the example below, the second "completed" will not be called.

You have to write observer.onCompleted() after observer.onNext("2") it order to have the same logic.

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


来源:https://stackoverflow.com/questions/46885948/rxswift-what-difference-between-observable-of-and-observablestring-create

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!