我试图解决异步顺序问题,例如:
有一个原始数据'在myclass中,我想对它执行一些顺序操作:operationA,operationB和operationC:
operationA接受OriginalData并返回outputA,完成后,operationB应将outputA作为输入并返回outputB,然后移到operationC ..
我所做的就是使用回调:
// pseudocode
class Myclass {
func operationA(inputA, callback: operationB)
func operationB(inputB, callback: operationC)
..
}
结果,如果使用回调,它将导致回调地狱和很多麻烦。我变成了RxSwift,但不知道如何使用RxSwift来解决它。
(P.S我已经阅读过RxSwift的官方文件,但仍然无法让我的想法清楚。最值得赞赏的是你的帮助!)
答案 0 :(得分:1)
我认为您可以使用PublishSubject解决此问题,如下所示:
let operationA = PublishSubject<String>()
let operationB = PublishSubject<String>()
let operationC = PublishSubject<String>()
let disposeBag = DisposeBag()
operationA.asObserver()
.subscribe(onNext:{element in
operationB.onNext(element)
})
.disposed(by: disposeBag)
operationB.asObserver()
.subscribe(onNext:{element in
operationC.onNext(element)
})
.disposed(by: disposeBag)
operationC.asObserver()
.subscribe(onNext:{element in
print(element)
})
.disposed(by: disposeBag)
operationA.onNext("A")