我想知道是否有任何方法可以在尚未返回任何结果时取消/中止 Firebase 实时数据库请求。
考虑以下因素:
1) 用户从列表中选择一个项目 2) (Web) 应用程序发出请求以检索该项目的一些消息或其他数据 3) 用户返回并选择不同的项目 4) Firebase 请求返回错误项目的结果
常规的 xhr 请求可以被中止。可以清除超时(setTimeout)。有什么方法可以中止/取消正在进行的 Firebase 请求吗?
示例:
var request;
// ..
if (request) { abort(request); request = null; }
request = firebase.database().ref("item1/").once("value", callback);
PS:这个问题是关于数据库的,但我想这对于大多数 Firebase 服务来说真的很方便?
最佳答案
无法中止读取操作。
如果您不想让应用程序再使用这些数据,您可以通过调用 off()
来分离监听器。
这不仅适用于您使用 .on() 注册的监听器,也适用于 .once()。
示例:
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() 之前返回结果)
关于javascript - 中止正在进行的 Firebase 数据库请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47301266/