swift – 在一个可观察物内处理一次性物品的正确方法
我有一个HTTPService,它返回一个Observable< NSData>.我的目标是将该服务组合到另一个服务中,ServiceA为我的用例转换该数据.在ServiceA中使用Rx
Swift 2.0.0-rc.0中的Observable.create就足够了.我的问题是如何正确处理从HTTPService订阅返回的一次性.
如果我什么都不做,我得到编译时间警告,调用结果未使用:http://git.io/rxs.ud.我从阅读中理解,如果我什么也不做,那可能没问题:(下面提到的xs是让xs:Observable< E> ;. ...
所以这就是我目前正在解决的问题,也是我想知道我是否正确地做到这一点,或者我是否误解了一些问题. public struct ServiceA{ public static func changes() -> Observable<ChangeSet>{ return Observable.create{ observable in // return's Observable<NSData> let request = HTTPService.get("https://httpbin.org/get") let disposable = request.subscribe( onNext: { data in // Do more work to transform this data // into something meaningful for the application. // For example purposes just use an empty object observable.onNext(ChangeSet()) observable.onCompleted() },onError:{ error in observable.onError(error) }) // Is this the right way to deal with the // disposable from the subscription in this situation? return AnonymousDisposable{ disposable.dispose() } } } } 解决方法
正如
documentation所说
实际上你的例子在规则方面看起来很好,但它很糟糕;)(也可以,如果你只是返回这个一次性): public static func changes() -> Observable<ChangeSet>{ return Observable.create{ observable in // return's Observable<NSData> let request = HTTPService.get("https://httpbin.org/get") return request.subscribe( onNext: { data in // Do more work to transform this data // into something meaningful for the application. // For example purposes just use an empty object observable.onNext(ChangeSet()) observable.onCompleted() },onError:{ error in observable.onError(error) }) } 但是当你回到Observeble时,我想知道,为什么你不只是使用地图运算符? 在您的示例中,它将是这样的: public static func changes() -> Observable<ChangeSet> { return HTTPService.get("https://httpbin.org/get") .map(ChangeSet.init) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |