您确定了两种可能性:要么使函数也异步,要么缓存最新的Firebase数据,以便您可以同步访问它。鉴于您正在编写的应用程序的上下文,您使用哪一个只是偏好和便利性的问题。
例如,我们注意到“动作游戏”通常是由紧密的渲染循环驱动的,而不是由Firebase数据更改事件驱动的。因此,缓存最新的Firebase数据以在渲染循环中使用是有意义的。例如:
var latestSnapshot = null;firebaseRef.on('value', function(snap) { latestSnapshot = snap; });然后,您可以在渲染循环(或其他任何地方)中同步使用latestSnapshot,尽管在第一个firebase回调发生之前,您必须小心将其处理为null。



