我有一个HTTPService
返回一个Observable<NSData>
. 我的目标是将该服务组合成另一个服务,ServiceA
为我的用例转换数据。Observable.create
在 RxSwift 2.0.0-rc.0 中使用ServiceA
它很简单。我的问题是如何正确处理订阅返回的一次性用品HTTPService
。
如果我什么都不做,我会收到编译时警告:http result of call is unused
: //git.io/rxs.ud。我从阅读中了解到,如果我什么都不做可能没问题:(xs
下面提到的是let xs: Observable<E> ....
如果 xs 以可预测的方式终止并显示 Completed 或 Error 消息,则不处理订阅 Disposable 不会泄漏任何资源,但它仍然是首选方式,因为这样元素计算会在可预测的时刻终止。
因此,这就是我目前正在解决的问题,以及我想知道我是否正确执行此操作或是否误解了某些内容的地方。
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()
}
}
}
}