Ho un HTTPService
che restituisce un Observable<NSData>
. Il mio obiettivo è comporre quel servizio in un altro servizio, ServiceA
che trasforma i dati per il mio caso d'uso. L'utilizzo di Observable.create
in RxSwift 2.0.0-rc.0 in ServiceA
è abbastanza semplice. La mia domanda è come gestire correttamente il monouso restituito dalla sottoscrizione dello HTTPService
.Modo corretto per smaltire un dispositivo monouso all'interno di un osservabile
Se non si esegue alcuna operazione, viene visualizzato il messaggio di compilazione in cui viene indicato result of call is unused
: http://git.io/rxs.ud. Capisco dalla lettura che se non faccio niente è probabile ok: (dove xs
accennato sotto è let xs: Observable<E> ....
In caso xs termina in modo prevedibile con Completato o Messaggio di errore, non la manipolazione di sottoscrizione monouso non colerà alcuna risorsa , ma è ancora preferito così perché in quell'elemento modo di calcolo è terminato al momento prevedibile.
Così qui è come attualmente sto rivolgo, e anche il luogo dove mi chiedo se sto facendo questo correttamente o se ho incompreso qualcosa
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()
}
}
}
}
si sta totalmente Spot on Re: 'map'. Me ne sono completamente dimenticato, grazie !. Per quanto riguarda 'disposeBag', dato che si tratta di una funzione statica, non so che un' disposeBag' sarebbe la cosa giusta in questo ambito, ma sicuramente la mappa è un ottimo suggerimento, grazie ancora. –
Siete i benvenuti :) Divertiti con RxSwift –