我对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%确保所有电话都已结束。有什么帮助吗?

最佳答案

我建议使用调度组:

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
    }
}


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

关于swift - 如何知道多个网络通话何时结束,才能完成通话,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43084587/

10-09 20:05