7

HTTPService返す がありますObservable<NSData>。私の目標は、そのサービスを別のサービスに構成して、ServiceAそのデータを私のユース ケースに変換することです。Observable.createRxSwift 2.0.0-rc.0 で使用ServiceAするのは簡単です。私の質問は、のサブスクリプションから返された使い捨てを適切に処理する方法HTTPServiceです。

何もしないと、コンパイル時にhttp://git.io/rxs.udresult of call is unusedという警告が表示されます。私が何もしなければ、おそらく大丈夫だということを読んで理解しました:(以下で言及されているのはxslet 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()
            }
        }
    }
}
4

1 に答える 1