【发布时间】:2016-11-25 04:00:55
【问题描述】:
我是 RXSwift 的新手,我只是尝试实现一个简单的异步示例
但 subscribe 永远不会被调用。
我想念什么?
let disposeBag = DisposeBag()
Observable<Any>.create {
observer in
DispatchQueue.global(qos: .background).asyncAfter(deadline: .now() + 3) {
observer.onNext("done")
observer.onCompleted()
}
return Disposables.create()
}
.subscribe { print($0) }
.addDisposableTo(disposeBag)
================= 更新======================
我正在尝试做一些更高级的事情,一个允许从以前传递值的链,但结果不是预期的。我想念什么?
输出是
下一步(完成 1 - 完成 2)
我的预期是
下一个(完成 1)
下一步(完成 1 - 完成 2)
完成
class AsyncObject {
func asyncTest1() -> Observable<String> {
return Observable<String>.create {
(o: AnyObserver<String>) -> Disposable in
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
o.onNext("done 1")
o.onCompleted()
}
return Disposables.create()
}
}
func asyncTest2(value: String) -> Observable<String> {
return Observable<String>.create {
(o: AnyObserver<String>) -> Disposable in
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
o.onNext("\(value) - done 2")
o.onCompleted()
}
return Disposables.create()
}
}
}
class ViewController: UIViewController {
let disposeBag = DisposeBag()
let observer = AsyncObject()
// MARK: Init Methods
override func viewDidLoad() {
super.viewDidLoad()
self.observer.asyncTest1()
.flatMap { self.observer.asyncTest2(value: $0) }
.subscribe { print($0) }
.addDisposableTo(disposeBag)
}
}
【问题讨论】: