あなたが要求を発行する前にグループに入る、ディスパッチグループを使用し、要求の完了ハンドラ内でグループを残す必要があります。それでは、あなたは非同期要求を行ったが、ネットワーク要求が行われたときに呼び出されます閉鎖した終了ハンドラパラメータを与え、いくつかの方法を持っていたこと、第二のために、と仮定してみましょう:
func perform(request: URLRequest, completionHandler: @escaping() -> Void) { ... }
開始するには彼らが完了したら、これらの2つの同時要求は、あなたのような何かをしたい、通知される:
let group = DispatchGroup()
group.enter()
perform(request: first) {
group.leave()
}
group.enter()
perform(request: second) {
group.leave()
}
group.notify(queue: .main) {
print("both done")
}
明らかに、perform(request:)
の実装が大幅に異なる場合があります(たとえば、あなたが閉鎖に戻ってデータを渡す必要がある場合があります)、 URLSession
を使用して独自のネットワークコードを作成する場合でもパターンは同じです。 Alamofireを使用します。 GCDグループを使用し、要求を作成するときにグループに入り、グループを非同期要求の完了ハンドラに残します。
出典
2016-09-16 16:10:43
Rob
GCDまたはNSOperqueueを使用できます。 GCD:これをチェックしてください[http://stackoverflow.com/questions/37805885/how-to-create-dispatch-queue-in-swift-3][1] – user6837640