javascript - Firestore,.onSnapshot 取消订阅会阻止页面呈现
问题描述
我在 javascript 中使用 Firebase 和 Firestore 使用 .onSnapshot 实时显示集合(大约 400 个元素):
collectionRef = db.collection('elements').doc(id).collection('subelements')
const unsubscribe = collectionRef.onSnapshot((q)=>{
// update a elements variable
});
我在检索列表并在它更改时更新它没有问题,但是,当我执行“取消订阅()”以停止接收更新时,我的所有页面冻结了大约 600 毫秒。
取消订阅本身的调用不会阻塞执行(我猜是异步的),但是在我调用取消订阅后,渲染会在某个时候冻结。这不会发生在较小的集合中,或者如果我不取消订阅它们。
我正在使用 Vue 并取消订阅“beforeDestroy”
更新
类似的性能问题,当在同一个列表上执行 get() 操作时,页面交互会冻结。删除回调上的所有处理并返回一个空数组后:
解决方案
推荐阅读
- python - 使用经过训练的 Keras 模型对新的 csv 数据进行预测
- python - 如何比较两次
- java - 如何在java + SpringBoot中生成带有转义字符“\ n”的JSON
- java - 在另一个 java method1 中调用 java method2 并且不要等待 method2 响应并继续执行
- php - Amazon SES:消息发送失败 - 遇到以下 SMTP 错误:552 5.3.4 消息太长
- visual-studio - 由于 Visual Studio 2019 社区中缺少工具,无法运行控制台应用程序?
- python - 打印变量时格式中的空格
- function - 使用 PowerShell 运行同步函数以实现补丁自动化
- javascript - 带有 php-mysql 的 Ajax 帖子无法正常工作
- server - 有没有办法将latency分解成不同的hops,只想知道latency时间的破坏