- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个应用,当用户点击 UIButton 时, 1. 我在 Firebase 中更新一个 child (比如 tapCount)
我正在使用 transactionBlock 来递增此计数,因为多个用户可能会同时递增此计数。我注意到的是因为完成这个 Firebase 事务有轻微的延迟,应用程序等待完成它然后在单击图像时加载 View Controller 。它几乎使应用程序有点迟钝。那么在不引起任何 UI 问题的情况下执行此操作的推荐方法是什么?有没有办法在后台线程中运行它?谢谢
func incrementTapCount() {
_tapCount += 1
// update the link
ref.runTransactionBlock { (currentData:MutableData) -> TransactionResult in
currentData.childData(byAppendingPath: "tapCount").value = self._tapCount
return TransactionResult.success(withValue: currentData)
}
}
func moreCommentAction(_ sender: AnyObject) {
let postCategory = self.globalPost.postCat
if Auth.auth().currentUser?.uid != nil {
//user is logged in
// this increments the Like count when a button is tapped.
self.globalPost.incrementTapCount()
// let likeCount = self.globalPost.favoriteBoost + self.globalPost.favoriteDict.count + self.globalPost.tapCount
// likeButton.setTitle(" \(likeCount)", for: UIControlState())
}
else {
//user is not logged in, so skip incrementing the tapCount.
}
let moreCommentVC = sender.storyboard?!.instantiateViewController(withIdentifier: "MoreCommentViewController") as! MoreCommentViewController
moreCommentVC.globalPost = self.globalPost
sender.present(moreCommentVC, animated: true, completion: nil)
}
最佳答案
我可以看到与 obj-c 相同的问题。 runTransactionBlock() 立即返回,但在调用 andCompletionBlock() 之前,主线程被阻塞 1-2 秒。
以前没有发生,更新到较新的 firebase 版本后开始看到它。在我的例子中,我设法通过减少要更新的数据量来缩短这种延迟。似乎 firebase 正在主线程上执行类似本地缓存更新的操作(只是一种理论)。
关于swift - runTransactionBlock 导致主线程延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48483803/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!