首页 > 解决方案 > 从firebase javascript获取价值后运行一些东西

问题描述

我有一个 javascript 函数,它从 firebase 实时数据库中的节点获取一些值。JS代码是:

var numZones;
var firebaseConfig = {
  apiKey: "",
    authDomain: "",
    databaseURL: "",
    projectId: "",
    storageBucket: "",
    messagingSenderId: "",
    appId: "",
    measurementId: ""
};
firebase.initializeApp(firebaseConfig);
  firebase.analytics();
  var db = firebase.database();
  var ref = firebase.database().ref("/LH121");
  ref.child("NumZones").once('value', function(snapshot)
  {
    numZones = snapshot.val();
    document.getElementById("zones").value = numZones;
    console.log('Got value');
  });
  console.log('After get value');
<script src="https://www.gstatic.com/firebasejs/7.15.3/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.15.3/firebase-analytics.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.15.3/firebase-firestore.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.15.3/firebase-database.js"></script>

<div class="container" style="text-align: center;">
  <div class="row">
    <input type="number" name="zones" id="zones" step="1">
   </div>
</div>

我想在从 firebase 获取值完成后访问一些东西。我该怎么做?

在此处输入图像描述

标签: javascriptjquery

解决方案


由于.once返回一个承诺,您可以链接一个.then块以在执行后运行您想要的代码.once

参考:https ://firebase.google.com/docs/reference/js/firebase.database.Reference#once

ref.child("NumZones").once('value', function(snapshot)
  {
    numZones = snapshot.val();
    document.getElementById("zones").value = numZones;
    console.log('Got value');
  }).then(() => console.log("After get value"));

我建议您使用以下内容,而不是在.once.

ref.child("NumZones").once('value').then((snapshot) => {
    numZones = snapshot.val();
    document.getElementById("zones").value = numZones;
    console.log('Got value');
  }).then(() => console.log("After get value"));

有关 javascript 承诺的更多信息: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise


推荐阅读