Swift:使用DispatchQueue.global(qos:.userInitiated).asyncAfter]重复返回的结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift:使用DispatchQueue.global(qos:.userInitiated).asyncAfter]重复返回的结果相关的知识,希望对你有一定的参考价值。
我有以下代码:(内部:ServerApiManager.sharedInstance.fetchMessages
是用于调用api的函数。)>
返回的结果是:
====didRequestReloadThread ATC Chat Thread DispatchQueue.global 633 fetchMessages DispatchQueue.global 633 fetchMessages ServerApiManager.sharedInstance.fetchMessage DispatchQueue DispatchQueue messagesCollectionView ServerApiManager.sharedInstance.fetchMessage DispatchQueue DispatchQueue messagesCollectionView ==> Wrong result because of duplicate.
预期结果是:
====didRequestReloadThread ATC Chat Thread DispatchQueue.global 633 fetchMessages ServerApiManager.sharedInstance.fetchMessage DispatchQueue DispatchQueue messagesCollectionView
任何人都可以帮忙吗?
DispatchQueue.global(qos: .userInitiated).asyncAfter(deadline: .now() + 5) {
print("DispatchQueue.global")
if(self.messages.count > 0){
let lastMessage = self.messages[self.messages.count-1]
print(633)
ServerApiManager.sharedInstance.fetchMessages(channel: self.channel, minId: lastMessage.id ?? 0, loggedInUser: self.user, onSuccess: { (messages) -> () in
self.messages.append(contentsOf: messages)
print("ServerApiManager.sharedInstance.fetchMessage")
MessageStorage.sharedInstance.messageDic[self.channel.id] = self.messages
print("DispatchQueue")
DispatchQueue.main.async {
print("DispatchQueue messagesCollectionView" )
self.messagesCollectionView.reloadData()
self.messagesCollectionView.scrollToBottom()
}
}, onFailure: { (msg, logged) -> () in
});
}
}
我有以下代码:(内部:ServerApiManager.sharedInstance.fetchMessages是用于调用api的函数)。返回的结果是:==== didRequestReloadThread ATC聊天线程DispatchQueue ....
如日志所示,ServerApiManager.fetchMessages(channel:minId:loggedInUser:onSuccess:onFailure)
方法的onSuccess调用了两次。因此,您应该检查此方法的内部,并找到调用onSuccess的位置以及为什么两次调用它。如果找不到,可以在此处添加相关代码,也可以使用中断桥检查堆栈跟踪以查找此方法第二次调用的位置。
以上是关于Swift:使用DispatchQueue.global(qos:.userInitiated).asyncAfter]重复返回的结果的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 Swift 3 项目中使用 Swift 2.3 框架吗?
Swift : 使用多个 swift 文件或仅使用一个 viewController?保持清洁
如何使用 Swift Package Manager `swift build` 命令构建 Swift Package 的优化版本