【发布时间】:2017-09-07 04:45:38
【问题描述】:
我有多个网络请求需要按顺序发生。他们必须等到前一个完成并收到服务器的响应。
现在我有一个回调死亡金字塔。有没有更自动化的方法来做到这一点?我尝试了OperationQueue,但它不会等待请求完成,然后再前进到下一个请求,即使它设置为一次执行一个请求。
不管怎样,.save 是对 CloudKit 的网络请求。没有像其他 CloudKit 操作那样的 CloudKit 订阅队列。
self.privateDB.save(subscriptions[0]){ savedSubscription, error in
//Request 1 is done
self.privateDB.save(subscriptions[1]){ savedSubscription, error in
//Request 2 is done
self.privateDB.save(subscriptions[2]){ savedSubscription, error in
//All 3 requests are done
}
}
}
我尝试了DispatchGroup,但这似乎不起作用。所有请求似乎都在等待响应之前触发。
let group = DispatchGroup()
//Create a subscription for every record type
for subscription in subscriptions{
group.enter()
//...
self.privateDB.save(subscription){ savedSubscription, error in
group.leave()
}
}
group.wait()
有什么想法吗?
【问题讨论】:
标签: swift3 grand-central-dispatch nsoperationqueue cksubscription