如何知道多个Web调用何时结束,以调用完成

时间:2016-10-07 07:09:21

标签: swift

我对Swift相当新,这个问题可能真的很愚蠢。请耐心等待我。

我想要使用collection调用重置Webservice个设备。这是我Function现在的样子(尚未完成)

func resetDevice(completion: () -> ()) {
    for device in devices {
        device.isValid = 0
        DeviceManager.instance.updateDevice(device).call { response in
            print("device reset")
        }
    }
}

我不太确定要打电话给我完成,也不确定如何100%确定所有来电都已结束。有帮助吗?

1 个答案:

答案 0 :(得分:1)

我建议使用调度组:

func resetDevice(completion: () -> ()) {
    let dispatchGroup = DispatchGroup()

    for device in devices {

        dispatchGroup.enter()

        device.isValid = 0

        DeviceManager.instance.updateDevice(device).call { response in
            print("device reset")
            dispatchGroup.leave()
        }
    }

    dispatchGroup.notify(queue: DispatchQueue.main) {
        // Some code to execute when all devices have been reset
    }
}

每个设备立即进入该组,但在收到响应之前不会离开该组。在所有对象都离开组之前,不会调用最后的通知块。