javascript - Firestore 取消订阅不是一项功能
问题描述
我在理解 unsubscribe() 函数用于分离侦听器时遇到了一些麻烦。每次用户单击按钮显示表以更改视图选项时,我都想分离侦听器。其实这是我的代码。以前的查询被称为取消订阅,正如官方 Firestore 文档中所报告的那样(我还在我的项目中的文档中测试了相同的示例代码)并且在控制台日志中总是返回unsubscribe is not a function
let query;
$(".btnShowTable").on("click", function () {
if(typeof query != "undefined") query.unsubscribe();
createTable(param);
});
function createTable(param) {
query = db.collection("test1/test2/"+param).orderBy("dataora", "desc").limit(10);
query.onSnapshot(function (querySnapshot) {
querySnapshot.docChanges().forEach(function (change) {
// get datas
});
});
}
我应该在我的代码中更改什么?
解决方案
query
是一个Query类型的对象,从API文档中可以看出它没有unsubscribe()
函数。您需要做的是按照文档中的说明进行操作。它说onSnapshot()返回一个取消订阅函数,以便在取消订阅时调用。
// subscribe to query results
const unsubscribe = query.onSnapshot(...)
// later, unsubscribe the listener
unsubscribe()