ios - 如何在 Swift 中进行嵌套在另一个 API 失败回调中的同步 API 调用
问题描述
在 getRatingReviewFromServer() 中,如果我获得成功,一切都很好,但如果我失败了,我需要调用另一个 API refreshToken() 如果我在 refreshToken() 调用上获得成功,我将使用新数据再次调用 getRatingReviewFromServer() 我将得到从 refreshToken() 成功。我怎样才能用最好的方法实现这个目标?
func getData(){
service.getRatingReviewFromServer(succeed: {(message) in
// my code code
//exits
}, failure: {message in
service.refreshToken(succeed: {
data in
// call RatingReviewService().getRatingReviewFromServer() again
}, failure: {
msg in
//exits
})
})
}
我怎么能做这样的事情?
解决方案
func getData() {
service.getRatingReviewFromServer(succeed: { (message) in
// my code code
//exits
}, failure: { [weak self] (message) in
service.refreshToken(succeed: { [weak self] (data) in
// call RatingReviewService().getRatingReviewFromServer() again
// You can restart the call
self?.getData()
}, failure: {
msg in
//exits
})
})
}
推荐阅读
- python - 具有向量输出的多元线性回归的更新规则
- rust - 被这个参数混淆了,返回类型被声明为不同的生命周期,但是来自 `key` 的数据在这里返回
- javascript - How to get from an array of objects all unique values of a property that is an array itself
- php - 有没有办法可以使用自定义页脚作为模板而不是使用 Magento 中的默认页脚
- html - Flexbox "nowrap" value isn't working
- ruby-on-rails - Provide an exception class and message as arguments to raise in Rails
- python - Flask-WTF Dynamic radiofield 在表单提交时运行新查询
- google-analytics-firebase - googleanalytics-api-V4 获取最大结果以将结果保存到数据框中
- c++ - 来自嵌入式应用程序 Arduino 或英特尔 Edison 的安慰消息?
- c - c语言中带有指针的fread和fwrite