0
这是我的非反应式代码,工作得很好。RXAlamofire不返回数据(错误与否)
FUNC getLatestHtml2(){
Alamofire.request("https://www.everfest.com/fest300").responseString { response in
print("\(response.result.isSuccess)")
if let html = response.result.value {
self.parseHTML(html: html)
}
}
}
然而,当我使其反应使用此代码。
func getLatestHtml1() -> Observable<String> {
return Observable<String>.create { (observer) -> Disposable in
let request = Alamofire
.request("https://www.everfest.com/fest300")
.responseString { response in
print(response.result.value)
observer.onNext(response.result.value!)
observer.onCompleted()
}
return Disposables.create { request.cancel() }
}
}
我在打印语句中没有得到任何数据。我甚至用RxAlamofire,我觉得是这个代码的正确方法,它有错误检查:
func getLatestHtml() -> Observable<String?> {
return RxAlamofire
.requestData(.get,"https://web.archive.org/web/20170429080421/https://www.everfest.com/fest300")
.debug()
.catchError { error in
print(error)
return Observable.never()
}
.map { (response, value) in
print(response.statusCode)
guard response.statusCode == 200 else { return nil }
print(value)
return String(data: value, encoding: String.Encoding.utf8)
}
.asObservable()
}
其产生的任何数据或错误的任何地方。我需要知道我的语法是错误的还是我关于反应式编程的想法是错误的。
我把它称为.getLatestHTMLX()。谢谢 !
非常感谢。一旦我将它绑定到一个视图,它就可以正常工作。感谢您的解释。 –