我需要对同一个API发出三个不同的请求。这些调用都不依赖于另一个。我目前的请求嵌套如下:
API.getPopularMovies() { responseObject, error in
if let results = responseObject {
self.popularMovies = results
self.API.getNowPlayingMovies() { responseObject, error in
if let results = responseObject {
self.nowPlayingMovies = results
self.API.getUpcomingMovies() { responseObject, error in
if let results = responseObject {
self.upcomingMovies = results
self.movies = [self.popularMovies, self.nowPlayingMovies, self.upcomingMovies]
self.tableView.reloadData()
}
}
}
}
}
}
}
我觉得这可能不是一个好方法,我正在寻找一些指导,以便更好地解决这个问题。目前,生成的数组似乎正确填充了我的表视图,但我无法提供帮助,但感觉这种嵌套方法不正确。
答案 0 :(得分:2)
如果您的操作都不依赖,那么为什么要嵌套它们呢?我发现你不会重新加载你的UITableView,直到第三个完成 - 如果这是一个硬性要求,那么它们依赖于。
当他们依赖时,这种嵌套有时被称为“末日金字塔”。清理它的一个好方法是将嵌套代码包装为monad,这将允许以下内容:
这称为承诺。这是一个很棒的tutorial on how they work.
还有一些很棒的图书馆。 PromiseKit是一个受欢迎的。