当前位置:  开发笔记 > 编程语言 > 正文

为什么Dispatch Group Notify被叫两次?

如何解决《为什么DispatchGroupNotify被叫两次?》经验,为你挑选了1个好方法。

我正在尝试让我的应用程序使用调度组来确保在继续之前已发送所有邀请.我认为notify只有在enters匹配后才会调用回调,leave但我的多次调用似乎是多次调用,这是我的代码:

    for invite in invites {
        dispatchGroup.enter()
        let ref = FIRDatabase.database().reference().child("users").child(invite.id).child("invites")
        print(invite)
        ref.updateChildValues([name: nameTextField.text!]) { (error, ref) -> Void in
            dispatchGroup.leave()

            dispatchGroup.notify(queue: DispatchQueue.main, execute: {
                print("YOYOYO")
            })
        }
    }

在我的控制台中,我看到2个"YOYOYO"让我很困惑.任何人都可以告诉我,如果我这样做不正确或者我的假设是错误的吗?



1> shallowThoug..:

你可能有两个invites.移动dispatchGroup.notify出的for循环,如果你希望所有后得到通知invites进行处理:

for invite in invites {
    dispatchGroup.enter()
    let ref = FIRDatabase.database().reference().child("users").child(invite.id).child("invites")
    print(invite)
    ref.updateChildValues([name: nameTextField.text!]) { (error, ref) -> Void in
        dispatchGroup.leave()            
    }
}

dispatchGroup.notify(queue: DispatchQueue.main) {
    print("YOYOYO")
}

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有