RxSwiftというライブラリを使ってみて非同期ができているか確認したかったのですが、非同期処理ができていないようでした。
以下のテストコードで非同期になっているとしたらprint("外")が呼ばれるものだと思ったのですが、呼ばれた順番が、メソッド内->戻り値->外になってしまいました。
RxSwiftに対してまだ理解できていない部分が多いのですが、非同期に処理を行いたい場合は下記のようなコードでは問題があるのでしょうか?
Swift
1 override func viewDidLoad() { 2 super.viewDidLoad() 3 4 rxTest().subscribe(onNext:{ val in 5 print(val) 6 }).dispose() 7 //非同期になっていたら最初に呼ばれるはず? 8 print("外") 9 10 } 11 func rxTest() -> Observable<String> { 12 return Observable<String>.create { observer in 13 sleep(1) 14 print("メソッド内") 15 observer.onNext("戻り値") 16 return Disposables.create() 17 } 18 }
あなたの回答
tips
プレビュー