作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题是关于 javascript 客户端的。
我的代码是这样的:
const localEvents = [];
const fbEvents = firebase.database().ref("myevents");
fbEvents.on("child_added", function(snapshot) {
const e = snapshot.val();
localEvents.push(e);
});
function createEvent(e) {
e.time = firebase.database.ServerValue.TIMESTAMP;
fbEvents.push(e);
}
调用 createEvent({})
后,我的 localEvents
列表中的条目的 time
值似乎不等于实际值数据库中的条目(客户端猜测时间戳并在实际完成与服务器的往返之前调用 child_added
处理程序)。有没有办法避免这种情况,和/或有没有办法在知道时间
的实际值时获得回调?
最佳答案
仅使用监听器中的快照来确定时间戳是来自服务器还是本地猜测是不可能的。
您可以做的是使用从 fbEvents.push(e)
返回的 Promise 来确定写入何时真正成功。一个已解决的 promise ,这意味着它肯定是写给 Firebase 的。之后您获得的监听器回调将包含服务器的更新值。
(请注意,使用 Firestore 可以确定文档是否已完全写入服务器。但使用实时数据库则不行。)
关于javascript - 使用 firebase.database.ServerValue.TIMESTAMP 时有没有办法获取实际时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59620985/
我是一名优秀的程序员,十分优秀!