HTTPService
はObservable<NSData>
を返します。私の目標は、そのサービスを別のサービス(便宜的にそのデータを変換するServiceA
)に組み立てることです。 ServiceA
のRxSwift 2.0.0-rc.0にObservable.create
を使用すると、それはまっすぐなものです。私の質問は、HTTPService
のサブスクリプションから返された使い捨て品を適切に処理する方法です。観察可能な範囲内でディスポーザブルを処分する適切な方法
私が何もしなければ、コンパイル時にresult of call is unused
:http://git.io/rxs.udという警告が表示されます。私は何もしない場合、それはおそらく大丈夫だことを読んでから理解:(下記xs
はケースXSでlet 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()
}
}
}
}
:: 'map'を
あなたの例では、このようなものになるだろう。私はそれについて完全に忘れました、ありがとう! 'disposeBag'については、静的な関数なので、' disposeBag'がそのスコープ内で正しいことは分かりませんが、間違いなくマップは素晴らしい提案です、もう一度ありがとうございます。 –
あなたは歓迎です:) RxSwiftを楽しんでください –