【发布时间】:2021-04-11 18:03:20
【问题描述】:
当我使用 loadMovies 函数时,只有在 ViewController 调用函数并处理它之后才能获得所需的电影,这个函数在 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()
}
}
在 ViewController 中,我在 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)
得到这个输出
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")]...
我想知道如何在处理之前等待函数获取电影。我想在 tableView 中显示所有内容。我是 RxSwift 的初学者,我相信有更好的方法来实现这一点,但目前我不知道。谢谢
【问题讨论】: