gpt4 book ai didi

swift - RXAlamofire 不返回数据(错误与否)

转载 作者:行者123 更新时间:2023-11-28 15:35:40 28 4
gpt4 key购买 nike

这是我的非响应式代码,运行良好。

函数 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()



}

在任何地方都没有产生任何数据或错误。我需要知道我的语法是否错误或我对响应式(Reactive)编程的想法是否错误。

我将其称为 .getLatestHTMLX()。谢谢!

最佳答案

Observable 是惰性的,除非有人监视它们,否则它们不会做任何工作(并且通常会在没有人监视时立即停止工作。)这意味着您必须订阅一个 observable 才能开始发射值.

此外,除非您明确共享可观察对象,否则它将为每个订阅者启动一个新请求。

关于swift - RXAlamofire 不返回数据(错误与否),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44317905/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com