RxSwift / Moya - 如果通过函数返回,则序列不会启动

时间:2017-11-07 19:50:40

标签: swift reactive-programming rx-swift moya

我尝试通过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)

调试输出表明它已订阅,但如果我通过该函数返回它,它将不会启动序列。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个错误。您需要保留提供者。将它存储在一个实例变量中,它不会被丢弃。

https://github.com/Moya/Moya/issues/1460