When I use loadMovies function I get desired movies only after the ViewController has called function and disposed it, this function is inside API
func loadMovies() -> Observable<[Movie]> {
let obsMovies = self.APICall(genrePath: Movies.action, structType: Movie.self)
return Observable.create{ observer -> Disposable in
obsMovies.subscribe(
onNext: { element in
observer.onNext(element)
print(element)
}
)
observer.onCompleted()
return Disposables.create()
}
}
In ViewController I call this function inside viewDidLoad
request.api.loadMovies()
.debug()
.subscribe(
onNext:{ data in
do {
print(data)
}
},
onError: { error in
print(error)
},
onCompleted: {
print("Completed")
},
onDisposed: {
print("Disposed")
}
)
.disposed(by: disposeBag)
and get this output
ViewController.swift:55 (viewDidLoad()) -> subscribed
ViewController.swift:55 (viewDidLoad()) -> Event completed
Completed
Disposed
ViewController.swift:55 (viewDidLoad()) -> isDisposed
[MovieTest.Movie(name: "Black Panther", year: "2018", rating: "83")]
[MovieTest.Movie(name: "AVENGERS: ENDGAME", year: "2019", rating: "90")]
[MovieTest.Movie(name: "MISSION: IMPOSSIBLE -- FALLOUT", year: "2018", rating: "88")]...
I want to how to wait for function to fetch movies before being disposed.I want to display everything in tableView. I'm beginner at RxSwift, I believe there is better way to achieve this but as of right now I have no idea. Thanks