您可以使用RxExamples
更好的理解RxSwift
。我在RxSwift
repo中找到了它。它帮助我理解了 RxSwift。
好的,让我们尝试使用Alamofire
and发送简单的请求RxSwift
。首先我们编写请求函数:
func getApi() -> Observable<AnyObject?> {
return create{ observer in
let request = Alamofire.request(.GET, "http://someapiurl.com", parameters: nil)
.response(completionHandler: { request, response, data, error in
if ((error) != nil) {
observer.on(.Error(error!))
} else {
observer.on(.Next(data))
observer.on(.Completed)
}
});
return AnonymousDisposable {
request.cancel()
}
}
}
getApi()
方法使用 . 发送请求并从服务器获取响应Alamofire
。我使用RxSwift
观察者发送成功或错误消息。其次,我们必须调用这个函数。您可以使用rx_tap
for 按钮:
class ViewController: UIViewController {
var disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
getApi()
// Set 3 attempts to get response
.retry(3)
// Set 2 seconds timeout
.timeout(2, MainScheduler.sharedInstance)
// Subscribe in background thread
.subscribeOn(Dependencies.sharedDependencies.backgroundWorkScheduler)
// Observe in main thread
.observeOn(Dependencies.sharedDependencies.mainScheduler)
// Subscribe on observer
.subscribe(
onNext: { data in
do {
let post = try NSJSONSerialization.JSONObjectWithData(data as! NSData, options: []) as! NSDictionary
print(post)
} catch {
print(NSString(data: data as! NSData, encoding: NSUTF8StringEncoding))
return
}
},
onError: { error in
print(error)
},
onCompleted: {
print("Completed")
},
onDisposed: {
print("Disposed")
}
)
.addDisposableTo(disposeBag)
}
}
这是我的简单例子。希望这对您有所帮助。ReactiveX
是一个巨大的机会。祝你学习顺利RxSwift
!