Javascript 中止正在进行的Firebase数据库请求
我想知道当Firebase实时数据库请求尚未返回任何结果时,是否有任何方法可以取消/中止该请求 考虑以下几点: 1) 用户从列表中选择一项 2) (Web)应用程序请求检索该项目的某些消息或其他数据 3) 用户返回并选择一个不同的项目 4) Firebase请求返回错误项的结果 可以中止常规xhr请求。可以清除超时(设置超时)。是否有任何方法中止/取消正在进行的firebase请求 例如:Javascript 中止正在进行的Firebase数据库请求,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我想知道当Firebase实时数据库请求尚未返回任何结果时,是否有任何方法可以取消/中止该请求 考虑以下几点: 1) 用户从列表中选择一项 2) (Web)应用程序请求检索该项目的某些消息或其他数据 3) 用户返回并选择一个不同的项目 4) Firebase请求返回错误项的结果 可以中止常规xhr请求。可以清除超时(设置超时)。是否有任何方法中止/取消正在进行的firebase请求 例如: var request; // .. if (request) { abort(request); re
var request;
// ..
if (request) { abort(request); request = null; }
request = firebase.database().ref("item1/").once("value", callback);
firebase.db.ref("/item1").once("value", function(snap) { console.log("1: ", snap.val()); });
firebase.db.ref("/item1").off();
firebase.db.ref("/item2").once("value", function(snap) { console.log("2: ", snap.val()); });
PS:这个问题是关于数据库的,但我想这对于大多数firebase服务来说是非常方便的?没有办法中止读取操作 如果您不想让应用程序再使用数据,可以通过调用
off()
来分离侦听器
这不仅适用于使用.on()注册的侦听器,还适用于.once()
例如:
var request;
// ..
if (request) { abort(request); request = null; }
request = firebase.database().ref("item1/").once("value", callback);
firebase.db.ref("/item1").once("value", function(snap) { console.log("1: ", snap.val()); });
firebase.db.ref("/item1").off();
firebase.db.ref("/item2").once("value", function(snap) { console.log("2: ", snap.val()); });
在控制台中打印以下内容:
2:{…}
换句话说:第一行的回调永远不会被调用(除非它在调用.off()之前返回一个结果)但是在这种情况下我没有侦听器。我用“一次”。我可以先执行ref(“item1/”).once(),然后执行ref(“item1/”).off,然后执行ref(“item2/”).once()吗?那永远不会触发item1的回调吗?试试看,让我知道。哇。这似乎奏效了!因此,我可以使用ref,而不是存储一个“id”并中止它。我将在稍后为这个问题添加一个答案。谢谢我真的不知道你为什么要在我告诉你的内容中添加第二个答案。如果你想让答案包含一个样本,建议编辑。很好。刚刚这么做了,我将删除我自己的答案:)再次感谢!