我是RXSwift的新手,我只是尝试实现一个简单的异步示例
但订阅永远不会被调用。
我想念的是什么?
public class Notification(){
public void printMessage(String k, String str){
//Some code
}
}
public class NotificationImpl1 extends Notification(){
public void method1() {
ErrorHelper helper = new ErrorHelper();
helper.showMessage("test", this);
}
}
public class ErrorHelper() {
public void showMessage(String msg, Notification notification){
// Change msg to necessary 2 parameters.
String k = getK(msg);
String str = getStr(msg);
notification.printMessage(k, str);
}
}
=================更新======================
我正在尝试做一些更高级的事情,一个允许从之前传递值的链,但结果不是预期的。我错过了什么?
输出
接下来(完成1 - 完成2)
我所期待的是
下一步(完成1)
接下来(完成1 - 完成2)
完成
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)
答案 0 :(得分:2)
我认为你可以将它与原版合并,以达到预期的效果。所以看起来应该是这样的
let test1 = self.observer.asyncTest1()
let test2 = test1.flatMap { self.observer.asyncTest2() }
Observable
.of(test1, test2)
.merge()
.subscribe { print($0) }
.addDisposableTo(disposeBag)
答案 1 :(得分:0)
得到了RxSwift Slack @sergdot的帮助,
let test1 = self.observer.asyncTest1().shareReplay(1)
let test2 = test1.flatMap { self.observer.asycTset2(value: $0) }
Observable.of(test1, test2).merge().subscribe {
print($0)
}
或
let test1 = self.observer.asyncTest1().shareReplay(1)
let test2 = test1.flatMap { self.observer.asycTset2(value: $0) }
test1.concat(test2).subscribe {
print($0)
}