相关疑难解决方法(0)

处理函数中的异步调用(Firebase)

好几次,我遇到了使用Firebase的同步和异步功能的问题.我的问题通常是我需要在我编写的函数中进行异步Firebase调用.举个简单的例子,假设我需要计算和显示一个对象的速度,我的Firebase存储距离和时间:

function calcVelocity() {
    var distance, time, velocity;

    firebaseRef.once('value', function(snapshot) {
        distance = snapshot.val().distance;
        time = snapshot.val().time;

        velocity = distance / time;
    });
    return velocity;
}

$("#velocity").html(calcVelocity());
Run Code Online (Sandbox Code Playgroud)

当然,上面的代码不起作用,因为firebaseRef.once()是异步调用,所以velocity当我们到达时还没有设置return velocity;.如果我们将回调函数置于return内部.on(),则根本不会返回任何内容.

一种解决方案是使我的calcVelocity()函数也异步.

另一种解决方案是存储同步读取但从Firebase异步更新的Firebase缓存版本.

这些解决方案中的一个比另一个好吗?还有更好的解决方案吗?

javascript ajax asynchronous firebase

10
推荐指数
3
解决办法
1万
查看次数

标签 统计

ajax ×1

asynchronous ×1

firebase ×1

javascript ×1