我正在尝试存储从firebase数据库中检索的文本,但是当我将datasnapshot.val()分配给变量时,它似乎没有任何效果。
var ref = firebase.database().ref().child("Text");
var output = "initial";
ref.on('value',function(datasnapshot){
output = datasnapshot.val();
})
console.log(output);
console.log仍然输出" initial"。这是为什么?
答案 0 :(得分:1)
Firebase API是异步,这意味着对数据的查询(在您的情况下为on()
方法)将立即返回,并且结果将在稍后的某个时间发送给您回调。您的代码希望立即收到结果,这不会发生。在结果可用于回调之前,on()
方法返回后立即执行日志行。
您应该在回调中完全处理 回调,而不是尝试使用 回调,它们首先可用:
ref.on('value',function(datasnapshot){
output = datasnapshot.val();
console.log(output);
})
另请read this blog post详细了解Firebase异步API,以及它们的设计原因。