使用 TRON 实现 RxSwift
Implementing RxSwift with TRON
我正在尝试开始使用 RxSwift,因此我尝试创建一个执行请求的函数,并尝试实现 TRON 附带的 rxResult() 函数,我使用的 HTTP 库。但是这方面的文档不是很详细。谁能指出我做错事的正确方向?这是我写的函数:
static func readAllWithRx() {
let token = UserDefaults.standard.value(forKey: Constants.kTokenUserDefaultsKey) as! String
let url = URL(string: "api/url")!
let request: APIRequest<AssessmentResponse, MyAppError> = APIHelper.tron.request(url.absoluteString)
_ = request.rxResult().subscribe(onNext: { AssessmentResponse in
print("RX AssessmentResponse \(AssessmentResponse)")
}, onError: { Error in
}, onCompleted: {
}, onDisposed: {
})
}
最后,我尝试使用以下方法在我的控制器中调用此请求:
let read = Assessments.readAllWithRx()
开头有两件事:
let read = Assessments.readAllWithRx()
假定函数 return 是同步的
- 您发布的 readAllWithRx 的实现没有 return 任何东西。
我从未使用过 TRON,但据我所知,它的 rxResult()
return 是一个 Observable<T>
,其中 T
是一种响应.在这种情况下,要获得 asynchronously
AssesmentResponse,您需要订阅 observable(正如您已经顺便做的那样)。
这是一个示例 - readAllWithRx 的更新实现(可能无法编译,在记事本中编写代码):
static func readAllWithRx() -> Observable<AssessmentResponse> {
let token = UserDefaults.standard.value(forKey: Constants.kTokenUserDefaultsKey) as! String
let url = URL(string: "api/url")!
let request: APIRequest<AssessmentResponse, MyAppError> = APIHelper.tron.request(url.absoluteString)
return request.rxResult()
}
那么,如果您需要在代码中的某处获取 AssessmentResponse:
Assessments.readAllWithRx().subscribe(onNext: { result in
// your response here
print(result)
})
我正在尝试开始使用 RxSwift,因此我尝试创建一个执行请求的函数,并尝试实现 TRON 附带的 rxResult() 函数,我使用的 HTTP 库。但是这方面的文档不是很详细。谁能指出我做错事的正确方向?这是我写的函数:
static func readAllWithRx() {
let token = UserDefaults.standard.value(forKey: Constants.kTokenUserDefaultsKey) as! String
let url = URL(string: "api/url")!
let request: APIRequest<AssessmentResponse, MyAppError> = APIHelper.tron.request(url.absoluteString)
_ = request.rxResult().subscribe(onNext: { AssessmentResponse in
print("RX AssessmentResponse \(AssessmentResponse)")
}, onError: { Error in
}, onCompleted: {
}, onDisposed: {
})
}
最后,我尝试使用以下方法在我的控制器中调用此请求:
let read = Assessments.readAllWithRx()
开头有两件事:
let read = Assessments.readAllWithRx()
假定函数 return 是同步的- 您发布的 readAllWithRx 的实现没有 return 任何东西。
我从未使用过 TRON,但据我所知,它的 rxResult()
return 是一个 Observable<T>
,其中 T
是一种响应.在这种情况下,要获得 asynchronously
AssesmentResponse,您需要订阅 observable(正如您已经顺便做的那样)。
这是一个示例 - readAllWithRx 的更新实现(可能无法编译,在记事本中编写代码):
static func readAllWithRx() -> Observable<AssessmentResponse> {
let token = UserDefaults.standard.value(forKey: Constants.kTokenUserDefaultsKey) as! String
let url = URL(string: "api/url")!
let request: APIRequest<AssessmentResponse, MyAppError> = APIHelper.tron.request(url.absoluteString)
return request.rxResult()
}
那么,如果您需要在代码中的某处获取 AssessmentResponse:
Assessments.readAllWithRx().subscribe(onNext: { result in
// your response here
print(result)
})