javascript - 如何等待 Firebase 检索值然后退出该函数

标签 javascript firebase firebase-realtime-database

我有一个 Firebase 查询。

由于 Firebase 异步工作,因此该函数将继续运行,而无需等待 Firebase 检索值。

有没有办法等待 Firebase 查询的结果,然后才从函数返回?

function CheckBuyingCondition(prefix) {

    var Res = "";

    var Current_Price_Open_ref = firebase.database().ref("dailyT/Current_Price_Open/" + nextDayTrading).orderByChild("Prefix").equalTo(prefix)
    Current_Price_Open_ref.once("value").then(function(snapshot) {
        if(snapshot.exists()) {
            snapshot.forEach(function(childSnapshot) {
                var val = childSnapshot.val();
                res = "" + val.Current_Price_Open;
            });
        }
        else {
            res = "NA";
        }
    });

    return res; // (Here I got res = "" instead of the correct value from Firebase query
}

最佳答案

使用异步/等待:

async function checkBuyingCondition(prefix) {
  var res = '';

  var currentPriceOpenRef = firebase.database()
    .ref(`dailyT/currentPriceOpen/${nextDayTrading}`)
    .orderByChild('prefix')
    .equalTo(prefix);

  var snapshot = await currentPriceOpenRef.once('value');

  if(snapshot.exists()) {
    snapshot.forEach(function(childSnapshot) {
      var val = childSnapshot.val();
      res = `${val.currentPriceOpen}`;
    });
  } else {
    res = 'NA';
  }

  return res;
}

请注意,这根本不会使您的函数同步,因此在函数声明开头使用 async 关键字;它只是让你的函数看起来像一个。

在函数内的第三行,您会注意到 await 关键字。这会等待您的 promise 解决,然后返回结果,在您的情况下,该结果是来自 Firebase 的快照。您只能在 async 函数中使用 await

更多阅读:JavaScript Async/Await

关于javascript - 如何等待 Firebase 检索值然后退出该函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48934280/

相关文章:

java - 更改任务的 OnCompleteListener 的 onComplete 方法中的 UI

android - getContactsFromFirebase() 方法返回一个空列表

swift - 如何在新 Controller 的tableView中打开数据,来自FIrebase的数据

ios - 简单地将所有用户从 firebase 数据库中拉出来并将它们放入一个数组中是否有效?

javascript - 搜索栏功能错误 IONIC 3

javascript - Jersey FormData,上传多个文件数据

javascript - Javascript 中的 constructor() 和 super() 方法

android - Node JS FCM token 未向用户发送通知

javascript - 向新用户发送电子邮件 firebase

javascript - 无法使用 Papa Parse 硬编码文件目录以进行 CSV 解析