func getUserChatRoom(chatroomsID: [String], handler: @escaping(_ chatrooms: [ChatRoomModel]) -> ()) {
guard !chatroomsID.isEmpty else {
return handler([])
}
print("1")
let group = DispatchGroup()
var chatrooms: [ChatRoomModel] = []
for id in chatroomsID {
print("2")
group.enter()
print("3")
db.collection("chatrooms").document(id).getDocument { (document, error) in
if let doc = document, doc.exists,
let chatroom = self.getChatRoomModel(document: doc) {
print("4")
chatrooms.append(chatroom)
print(chatrooms.count)
} else if let error = error {
print(error)
}
}
print("5")
group.leave()
}
group.notify(queue: .main) {
print("5")
handler(chatrooms)
}
}
強文本 這是函式運行時列印的內容:[在此處輸入影像描述][1]我使用了調度組,但它似乎不起作用[1]:https://i.stack.imgur.com/7OE62 .png
uj5u.com熱心網友回復:
您必須將leave陳述句放入閉包中才能DispatchGroup正常作業
group.enter()
print("enter", id)
db.collection("chatrooms").document(id).getDocument { (document, error) in
if let doc = document, doc.exists,
let chatroom = self.getChatRoomModel(document: doc) {
print("4")
chatrooms.append(chatroom)
print(chatrooms.count)
} else if let error = error {
print(error)
}
print("leave", id)
group.leave()
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/517877.html
