我有一个方法可以对来自两个不同来源的项目进行排序,然后将它们放入tableView中,两个来源都可以同时调用,并且可以独立返回结果,如何确保如果有新的回调出现,将等待上一个完成吗?我认为允许对数据源同时进行两个或多个修改不是一个好主意
我的意思是
func fetchPlaylists() {
self.repo.getAllPlaylists(from: [.source1, .source2]) { [weak self] result in
switch result {
case .success(let playlists):
// Wait for previous callback to finish the sortIncoming method
self?.sortIncoming(playlists: playlists)
case .failure(let error):
print(error.localizedDescription)
}
}
}
private func sortIncoming(playlists: [AWPlaylist]) {
...
insertToTableViewClosure?(sections, rows)
}
我了解DispatchGroup
,但是我不知道回调将被调用多少次,这取决于源的大小,因此我不确定在这里是否有用>