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()。謝謝 !
非常感謝。一旦我將它綁定到一個視圖,它就可以正常工作。感謝您的解釋。 –