RxSwift/Moya - 如果通过函数返回序列将不会启动
RxSwift/Moya - Sequence won't start if it is returned via function
我尝试通过 Moya 启动网络请求。
let provider = MoyaProvider<User>()
provider.rx.request(.Auth(username: username, password: password))
.filterSuccessfulStatusAndRedirectCodes()
.debug()
.mapOptional(to: Authentication.self)
.observeOn(MainScheduler.instance)
.subscribe {
event in
print(event)
}.disposed(by: disposeBag)
当我按照上述方式执行时,一切正常。
但如果我这样做:
func logIn(username: username, password: password) -> Single<Authentication?> {
let provider = MoyaProvider<User>()
return provider.rx.request(.Auth(username: username, password: password))
.filterSuccessfulStatusAndRedirectCodes()
.debug()
.mapOptional(to: Authentication.self)
}
然后调用函数:
self.loginIn(username: username, password: password)
.observeOn(MainScheduler.instance)
.subscribe {
event in
print(event)
}
.disposed(by: disposeBag)
调试输出表明它已被订阅,但如果我通过函数 return 它不会启动序列。
我已经解决了错误。您需要保留提供者。存储在实例变量中,不会被释放。
我尝试通过 Moya 启动网络请求。
let provider = MoyaProvider<User>()
provider.rx.request(.Auth(username: username, password: password))
.filterSuccessfulStatusAndRedirectCodes()
.debug()
.mapOptional(to: Authentication.self)
.observeOn(MainScheduler.instance)
.subscribe {
event in
print(event)
}.disposed(by: disposeBag)
当我按照上述方式执行时,一切正常。
但如果我这样做:
func logIn(username: username, password: password) -> Single<Authentication?> {
let provider = MoyaProvider<User>()
return provider.rx.request(.Auth(username: username, password: password))
.filterSuccessfulStatusAndRedirectCodes()
.debug()
.mapOptional(to: Authentication.self)
}
然后调用函数:
self.loginIn(username: username, password: password)
.observeOn(MainScheduler.instance)
.subscribe {
event in
print(event)
}
.disposed(by: disposeBag)
调试输出表明它已被订阅,但如果我通过函数 return 它不会启动序列。
我已经解决了错误。您需要保留提供者。存储在实例变量中,不会被释放。