我正在尝试为我的tableView添加一次拉动以刷新动作,但是当我从API中获取数据时,tableView会冻结……
在这里,代码简化了:
// ViewController
private let refreshControl = UIRefreshControl()
tableView.refreshControl = refreshControl
refreshControl.addTarget(self, action: #selector(fetchData(_:)), for: .valueChanged)
private func fetchData() {
self.viewModel.fetchData {
DispatchQueue.main.async {
self.tableView.reloadData()
self.refreshControl.endRefreshing()
}
}
}
// ViewModel
func fetchData(completion: (() -> Void)?) {
provider.request(.fetchData))
.map({ $0.fetchData() })
.subscribe(onNext: { result in
switch result {
case .success:
completion?()
case .failure(let error):
print("=> error", error)
completion?()
}
}, onError: {
completion?()
})
.disposed(by: self.disposeBag)
}
我不太了解,因为对于我来说,Moya会进行异步通话。你知道我在做什么错吗?
谢谢