У меня есть HTTPService
, который возвращает Observable<NSData>
. Моя цель состоит в том, чтобы составить эту услугу в другую службу, ServiceA
, которая преобразует эти данные в мой прецедент. Используя Observable.create
в RxSwift 2.0.0-rc.0 в ServiceA
, он достаточно прямолинейный. Мой вопрос заключается в том, как правильно обрабатывать одноразовое устройство, возвращаемое из подписки HTTPService
.Правильный способ утилизации одноразового в пределах наблюдаемого
Если я ничего не предпринимаю, я получаю предупреждение о времени компиляции, которое result of call is unused
: http://git.io/rxs.ud. Я понимаю, от чтения, что, если я ничего не делаю это, вероятно, хорошо: (где 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 –